Welches Datum sollten Sie testen?
Die eine Hälfte des Datumstests ist, die Uhr zu verschieben. Die andere ist zu wissen, wohin. Ein Online-Rechner sagt Ihnen, was in neunzig Tagen ist. Er sagt Ihnen nicht, dass es ein Feiertag der Banken ist oder der letzte Tag des Quartals.
04/08/2008 eingefügt, und
beide Lesarten werden gezeigt, statt eine zu raten.Werktage, mit echten Feiertagen
„Zehn Werktage später“ ist keine Arithmetik - es hängt davon ab, nach welchem Kalender welches Landes Sie zählen. Gleiches Startdatum, gleiche zehn Tage, zwei verschiedene Antworten:
$ chrono calc --base 2027-09-01T00:00:00 --shift +10bd --calendar us-banking result: 2027-09-16T00:00:00 $ chrono calc --base 2027-09-01T00:00:00 --shift +10bd --calendar pl result: 2027-09-15T00:00:00
Ein Tag Unterschied, und der Rechner sagt Ihnen, warum, wenn Sie ihn nach dem Datum dazwischen fragen:
$ chrono calc --base 2027-09-06T00:00:00 --calendar us-banking metadata: weekday Monday business day no (us-banking) holiday Labor Day what this date lands on: public holiday (weekend and holiday marks follow the us-banking calendar)
Die Vereinigten Staaten und Polen werden als Referenzkalender mitgeliefert, weil sie zusammen jeden Regeltyp abdecken, den es gibt: feste Daten, den n-ten Wochentag eines Monats, vom Osterdatum berechnete Tage und die amerikanische Regel, nach der ein auf einen Samstag fallender Feiertag am vorangehenden Freitag begangen wird. Ein Land hinzuzufügen ist eine Datendatei, keine Codeänderung.
Alle Formate auf einmal
Die getestete Anwendung will das Datum in der Form, die sie erwartet. Statt Sie umrechnen zu lassen, druckt der Rechner alle - und eine eigene Maske für die, die in keinen Standard passen.
$ chrono calc --preset year-2038 --zone +00:00 Chrono Mock - date calculator preset: year-2038 - 2038 boundary explains: Does the app survive the 32-bit Unix time boundary (2038-01-19T03:14:07Z)? result: 2038-01-19T03:14:07 formats: ISO date 2038-01-19 ISO datetime 2038-01-19T03:14:07+00:00 US 01/19/2038 PL 19.01.2038 epoch (s) 2147483647 epoch (ms) 2147483647000 FILETIME 137919572470000000 RFC 1123 Tue, 19 Jan 2038 03:14:07 GMT ... what this date lands on: at or past the 2038-01-19T03:14:07Z 32-bit time_t limit (Y2038)
Dieser Epochenwert ist kein Zufall - 2147483647 ist genau die größte Zahl, die eine
vorzeichenbehaftete 32-Bit-Ganzzahl fasst, und das ist der ganze Grund, warum das Datum zählt.
Ein Datum rückwärts lesen
Die andere Richtung ist genauso nützlich: ein Datum aus einem Log einfügen und herausfinden, was
es ist. Ist das Format mehrdeutig - und 04/08 ist in der halben Welt mehrdeutig -,
werden beide Lesarten gezeigt, statt eine zu raten, denn aus dem Raten stammte
der ursprüngliche Fehlerbericht.
$ chrono calc --analyze 04/08/2027 Chrono Mock - date analysis input: 04/08/2027 (ambiguous - month/day order differs by locale) US MM/DD/YYYY: 2027-04-08 (Thursday) PL DD/MM/YYYY: 2027-08-04 (Wednesday)
Vier Monate auseinander, an verschiedenen Wochentagen. Ein ISO-Datum ist eindeutig und wird als solches gelesen, und etwas, das überhaupt kein Datum ist, wird abgelehnt, statt erraten zu werden.
Aus Schritten gebaut, nicht aus einem Satz
Ein Zeitpunkt ist ein Ausgangspunkt plus Schritte, und nach jedem Schritt wird das Zwischenergebnis gezeigt, sodass ein Ausdruck, der eine überraschende Antwort liefert, Ihnen zeigt, wo er abgebogen ist. Fünf Arten von Schritten: um eine Einheit verschieben, die Uhrzeit setzen, auf eine Periodengrenze springen, zum nächsten Werktag gehen und in einer anderen Zeitzone neu ausdrücken.
# Die letzte Sekunde vor dem Jahreswechsel chrono calc --base today --snap eoy # Neunzig Werktage später, im amerikanischen Bankenkalender chrono calc --base today --shift +90bd --calendar us-banking # Achtzehn Jahre und einen Tag zurück, für eine Altersprüfung chrono calc --base today --shift -18y --shift -1d
Jedes berechnete Datum geht direkt in eine Ersetzungssitzung, und --json gibt
dasselbe Ergebnis in Maschinenform aus.
Die testenswerten Daten →