Datum und Uhrzeit korrekt mit Claude Code handhaben
Erfahren Sie, wie Sie Datum und Uhrzeit korrekt mit Claude Code handhaben. Mit praktischen Codebeispielen.
Datums- und Zeitverarbeitung mit Claude Code korrekt implementieren
Die Verarbeitung von Datum und Uhrzeit birgt viele unerwartete Fallstricke: Zeitzonen, Formatierung, Locale-Unterstützung und mehr. Mit Claude Code können Sie robuste Datumsverarbeitung gemäß Best Practices effizient implementieren.
Bibliotheksauswahl
> Erstelle Utilities für Datums- und Zeitverarbeitung.
> Verwende day.js mit Zeitzonenkonvertierung, relativer Zeitanzeige,
> deutschem Format und Arbeitstageberechnung.
- day.js: Leichtgewichtig (2KB) mit Moment.js-kompatibler API
- date-fns: Funktionsbasiert, optimal für Tree-Shaking
- Temporal API: Zukünftige Standard-API (noch im Vorschlagsstadium)
Implementierung der Datums-Utilities
// src/lib/date-utils.ts
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';
import relativeTime from 'dayjs/plugin/relativeTime';
import 'dayjs/locale/de';
dayjs.extend(utc);
dayjs.extend(timezone);
dayjs.extend(relativeTime);
dayjs.locale('de');
// Standard-Zeitzone
const DEFAULT_TZ = 'Europe/Berlin';
// Format-Presets
export const DATE_FORMATS = {
full: 'DD. MMMM YYYY (ddd) HH:mm',
date: 'DD. MMMM YYYY',
dateShort: 'DD.MM.',
time: 'HH:mm',
iso: 'YYYY-MM-DDTHH:mm:ssZ',
api: 'YYYY-MM-DD',
} as const;
/**
* UTC-Datumsstring in lokaler Zeitzone formatieren
*/
export function formatDate(
date: string | Date,
format: keyof typeof DATE_FORMATS = 'date'
): string {
return dayjs(date).tz(DEFAULT_TZ).format(DATE_FORMATS[format]);
}
/**
* Relative Zeit zurückgeben ("vor 3 Minuten", "vor 2 Stunden", "gestern" usw.)
*/
export function timeAgo(date: string | Date): string {
const d = dayjs(date);
const now = dayjs();
const diffHours = now.diff(d, 'hour');
if (diffHours < 1) {
const diffMinutes = now.diff(d, 'minute');
if (diffMinutes < 1) return 'gerade eben';
return `vor ${diffMinutes} Minuten`;
}
if (diffHours < 24) return `vor ${diffHours} Stunden`;
if (diffHours < 48) return 'gestern';
if (diffHours < 168) return `vor ${Math.floor(diffHours / 24)} Tagen`;
return formatDate(date, 'date');
}
/**
* Zeitzonenkonvertierung
*/
export function convertTimezone(
date: string | Date,
fromTz: string,
toTz: string
): dayjs.Dayjs {
return dayjs.tz(date, fromTz).tz(toTz);
}
/**
* Prüfen, ob es ein Arbeitstag ist
*/
export function isBusinessDay(date: string | Date): boolean {
const d = dayjs(date);
const dayOfWeek = d.day();
return dayOfWeek !== 0 && dayOfWeek !== 6; // Sonntag=0, Samstag=6
}
/**
* Datum N Arbeitstage in der Zukunft ermitteln
*/
export function addBusinessDays(date: string | Date, days: number): dayjs.Dayjs {
let current = dayjs(date);
let remaining = days;
while (remaining > 0) {
current = current.add(1, 'day');
if (isBusinessDay(current.toDate())) {
remaining--;
}
}
return current;
}
Natives Formatieren mit der Intl API
Auch ohne Bibliotheken können viele Formatierungen mit der Browser-Intl-API durchgeführt werden.
// src/lib/intl-date.ts
/**
* Datumsformatierung mit Intl.DateTimeFormat
*/
export function formatDateIntl(date: Date, style: 'long' | 'short' = 'long'): string {
return new Intl.DateTimeFormat('de-DE', {
year: 'numeric',
month: style === 'long' ? 'long' : 'numeric',
day: 'numeric',
weekday: style === 'long' ? 'short' : undefined,
}).format(date);
}
/**
* Differenz zwischen zwei Daten in lesbarer Form anzeigen
*/
export function formatDateRange(start: Date, end: Date): string {
return new Intl.DateTimeFormat('de-DE', {
year: 'numeric',
month: 'short',
day: 'numeric',
}).formatRange(start, end);
}
/**
* Relatives Zeitformat
*/
export function formatRelative(date: Date): string {
const rtf = new Intl.RelativeTimeFormat('de', { numeric: 'auto' });
const now = new Date();
const diffMs = date.getTime() - now.getTime();
const diffSec = Math.round(diffMs / 1000);
const diffMin = Math.round(diffSec / 60);
const diffHour = Math.round(diffMin / 60);
const diffDay = Math.round(diffHour / 24);
if (Math.abs(diffSec) < 60) return rtf.format(diffSec, 'second');
if (Math.abs(diffMin) < 60) return rtf.format(diffMin, 'minute');
if (Math.abs(diffHour) < 24) return rtf.format(diffHour, 'hour');
return rtf.format(diffDay, 'day');
}
Verwendung in React-Komponenten
// src/components/TimeDisplay.tsx
'use client';
import { useState, useEffect } from 'react';
import { timeAgo } from '@/lib/date-utils';
export function TimeDisplay({ date }: { date: string }) {
const [display, setDisplay] = useState(timeAgo(date));
useEffect(() => {
const interval = setInterval(() => {
setDisplay(timeAgo(date));
}, 60000); // Jede Minute aktualisieren
return () => clearInterval(interval);
}, [date]);
return (
<time dateTime={date} title={new Date(date).toLocaleString('de-DE')}>
{display}
</time>
);
}
Häufige Fallstricke
- Zeitzone nicht berücksichtigt: Wenn Server und Client unterschiedliche Zeitzonen haben, immer in UTC speichern und auf dem Client konvertieren
- Sommerzeit: In einigen Ländern zu beachten, besonders bei internationalen Nutzern
- Date.parse()-Verhalten: Unterschiede zwischen Browsern, daher mit day.js etc. parsen
Verwandte Artikel
Zur Internationalisierung allgemein siehe den i18n-Implementierungsleitfaden, zur Währungsformatierung die Implementierung der Währungsformatierung.
Die offizielle day.js-Dokumentation (day.js.org) bietet eine Übersicht über die verfügbaren Plugins.
Kostenloses PDF: Claude-Code-Spickzettel in 5 Minuten
Trag einfach deine E-Mail-Adresse ein – wir senden dir den A4-Spickzettel als PDF sofort zu.
Wir behandeln deine Daten sorgfältig und senden niemals Spam.
Über den Autor
Masa
Ingenieur, der Claude Code intensiv nutzt. Betreibt claudecode-lab.com, ein Tech-Medium in 10 Sprachen mit über 2.000 Seiten.
Ähnliche Artikel
7 Prüfungen, bevor du täglich einen mehrsprachigen Claude-Code-Artikel veröffentlichst
Eine praktische Checkliste, damit tägliche mehrsprachige Claude-Code-Artikel nicht an fehlenden Sprachen, kaputten CTAs oder veralteten Live-Seiten scheitern.
Was sind Codex Automations? Content Ops mit KI planen und ausfuehren
Praktischer Leitfaden fuer Codex Automations: Analytics, Themenwahl, Artikel, CTA, Deployment und Monetarisierung.
Claude Code × GCP Cloud Functions Komplettanleitung | Serverlose Funktionen blitzschnell entwickeln
GCP Cloud Functions mit Claude Code optimieren. HTTP/Pub/Sub/Firestore-Trigger implementieren, lokal testen und Deployments automatisieren — mit echten Codebeispielen aus Masas Praxiserfahrung.