43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
export function formatDate(date: Date | string): string {
|
|
const d = typeof date === 'string' ? new Date(date) : date;
|
|
|
|
if (isNaN(d.getTime())) {
|
|
return 'Ungültiges Datum';
|
|
}
|
|
|
|
const day = d.getDate().toString().padStart(2, '0');
|
|
const month = (d.getMonth() + 1).toString().padStart(2, '0');
|
|
const year = d.getFullYear();
|
|
|
|
return `${day}.${month}.${year}`;
|
|
}
|
|
|
|
export function formatDateTime(date: Date | string): string {
|
|
const d = typeof date === 'string' ? new Date(date) : date;
|
|
|
|
if (isNaN(d.getTime())) {
|
|
return 'Ungültiges Datum';
|
|
}
|
|
|
|
const dateStr = formatDate(d);
|
|
const hours = d.getHours().toString().padStart(2, '0');
|
|
const minutes = d.getMinutes().toString().padStart(2, '0');
|
|
|
|
return `${dateStr}, ${hours}:${minutes}`;
|
|
}
|
|
|
|
export function parseDateString(dateString: string): Date | null {
|
|
if (!dateString) return null;
|
|
|
|
// Try German format: DD.MM.YYYY or D.M.YYYY
|
|
const germanMatch = dateString.match(/(\d{1,2})\.(\d{1,2})\.(\d{4})/);
|
|
if (germanMatch) {
|
|
const [, day, month, year] = germanMatch;
|
|
return new Date(parseInt(year), parseInt(month) - 1, parseInt(day));
|
|
}
|
|
|
|
// Try ISO format or other standard formats
|
|
const date = new Date(dateString);
|
|
return isNaN(date.getTime()) ? null : date;
|
|
}
|