Datums-Dienstprogramme
Das Headless-Paket exportiert eine Reihe von nativen Date-Hilfsfunktionen. Diese ersetzen die Notwendigkeit für Bibliotheken wie dayjs oder date-fns – die Bibliothek hat keine externen Datumsabhängigkeiten.
Alle Funktionen sind rein (sie geben neue Date-Objekte zurück, anstatt die Eingabe zu verändern).
Import
import { today, parseDate, startOf, endOf, add, subtract, isSame, isBefore, isAfter, diff, daysInMonth, setYear, setMonth, setDate, setHour, setMinute, setSecond, formatBasic,} from "react-date-range-picker-headless";DateUnit-Typ
Die meisten Funktionen akzeptieren einen DateUnit-Parameter:
type DateUnit = "year" | "month" | "week" | "day" | "hour" | "minute" | "second" | "millisecond";Funktionen
today
Gibt das aktuelle Datum/die aktuelle Uhrzeit zurück.
const now = today(); // new Date()parseDate
Analysiert einen Wert in ein Date-Objekt. Gibt new Date() zurück, wenn die Eingabe ‘falsy’ ist.
parseDate("2026-03-01"); // DateparseDate(1709251200000); // Datum aus ZeitstempelparseDate(existingDate); // KlonenparseDate(null); // new Date() (Fallback)Signatur: parseDate(date?: Date | string | number | null): Date
startOf
Ermittelt den Anfang einer Zeiteinheit.
startOf(date, "day"); // 2026-03-01 00:00:00.000startOf(date, "month"); // 2026-03-01 00:00:00.000startOf(date, "year"); // 2026-01-01 00:00:00.000startOf(date, "week"); // Anfang der Woche (Standard Sonntag)startOf(date, "week", 1); // Anfang der Woche (Montag)Signatur: startOf(date: Date, unit: DateUnit, weekStartsOn?: number): Date
endOf
Ermittelt das Ende einer Zeiteinheit.
endOf(date, "day"); // 2026-03-01 23:59:59.999endOf(date, "month"); // 2026-03-31 23:59:59.999endOf(date, "year"); // 2026-12-31 23:59:59.999Signatur: endOf(date: Date, unit: DateUnit, weekStartsOn?: number): Date
add
Fügt einem Datum eine Zeitspanne hinzu.
add(date, 1, "day"); // Morgenadd(date, 3, "month"); // 3 Monate späteradd(date, -1, "year"); // vor 1 Jahradd(date, 2, "hour"); // 2 Stunden späterBehandelt Monatsüberläufe (z. B. 31. Jan. + 1 Monat = 28. Feb., nicht 3. März).
Signatur: add(date: Date, amount: number, unit: DateUnit): Date
subtract
Subtrahiert eine Zeitspanne von einem Datum. Entspricht add(date, -amount, unit).
subtract(date, 7, "day"); // vor 7 Tagensubtract(date, 1, "month"); // vor 1 MonatSignatur: subtract(date: Date, amount: number, unit: DateUnit): Date
isSame
Prüft, ob zwei Daten bei einer bestimmten Genauigkeitseinheit identisch sind.
isSame(date1, date2, "day"); // Gleicher Kalendertag?isSame(date1, date2, "month"); // Gleicher Monat?isSame(date1, date2, "year"); // Gleiches Jahr?isSame(null, date2, "day"); // false (null-sicher)Signatur: isSame(date1: Date | null | undefined, date2: Date | null | undefined, unit?: DateUnit): boolean
isBefore
Prüft, ob das erste Datum vor dem zweiten liegt (bei einer bestimmten Genauigkeit).
isBefore(date1, date2, "day"); // Liegt date1 an einem früheren Tag?isBefore(date1, date2); // MillisekundenvergleichSignatur: isBefore(date1: Date, date2: Date, unit?: DateUnit): boolean
isAfter
Prüft, ob das erste Datum nach dem zweiten liegt (bei einer bestimmten Genauigkeit).
isAfter(date1, date2, "day"); // Liegt date1 an einem späteren Tag?Signatur: isAfter(date1: Date, date2: Date, unit?: DateUnit): boolean
diff
Ermittelt die Differenz zwischen zwei Daten in einer bestimmten Einheit.
diff(date1, date2, "day"); // Anzahl der Tage dazwischendiff(date1, date2, "month"); // Anzahl der Monate dazwischendiff(date1, date2, "year"); // Anzahl der Jahre dazwischenSignatur: diff(date1: Date, date2: Date, unit: DateUnit): number
daysInMonth
Ermittelt die Anzahl der Tage im Monat eines Datums.
daysInMonth(new Date(2026, 1)); // 28 (Februar 2026)daysInMonth(new Date(2026, 0)); // 31 (Januar 2026)Signatur: daysInMonth(date: Date): number
setYear / setMonth / setDate / setHour / setMinute / setSecond
Setzt einen bestimmten Teil eines Datums und gibt ein neues Date-Objekt zurück.
setYear(date, 2027); // Jahr auf 2027 ändernsetMonth(date, 5); // Auf Juni ändern (0-indiziert)setDate(date, 15); // Auf den 15. ändernsetHour(date, 14); // Auf 14 Uhr ändernsetMinute(date, 30); // Auf :30 ändernsetSecond(date, 0); // Auf :00 ändernsetYear und setMonth behandeln Überläufe (z. B. wird der 29. Feb. in einem Schaltjahr, wenn er auf ein Nicht-Schaltjahr gesetzt wird, auf den 28. Feb. geklemmt).
Signaturen:
setYear(date: Date, year: number): DatesetMonth(date: Date, month: number): DatesetDate(date: Date, day: number): DatesetHour(date: Date, hour: number): DatesetMinute(date: Date, minute: number): DatesetSecond(date: Date, second: number): Date
formatBasic
Formatiert ein Datum mithilfe einer Vorlagenzeichenfolge.
formatBasic(date, "YYYY-MM-DD"); // "2026-03-01"formatBasic(date, "YYYY/MM/DD HH:mm:ss"); // "2026/03/01 14:30:00"formatBasic(date, "M/D"); // "3/1"formatBasic(date, "hh:mm A"); // Hinweis: A-Token nicht unterstützt, verwenden Sie 'period' aus dem HookUnterstützte Tokens:
| Token | Ausgabe | Beispiel |
|---|---|---|
YYYY | 4-stellige Jahreszahl | 2026 |
MM | 2-stelliger Monat | 03 |
M | Monat (ohne Füllung) | 3 |
DD | 2-stelliger Tag | 01 |
D | Tag (ohne Füllung) | 1 |
HH | 2-stellige Stunde (24h) | 14 |
H | Stunde (24h, ohne Füllung) | 14 |
hh | 2-stellige Stunde (12h) | 02 |
h | Stunde (12h, ohne Füllung) | 2 |
mm | 2-stellige Minute | 30 |
m | Minute (ohne Füllung) | 30 |
ss | 2-stellige Sekunde | 05 |
s | Sekunde (ohne Füllung) | 5 |
Signatur: formatBasic(date: Date, format: string): string