Chrono Mock
SpracheDeutsch

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.

Der Rechner von Chrono Mock. Links läuft eine durchsuchbare Szenarioliste mit ihren Erläuterungen, in der Mitte steht der Datumsbaukasten, und die Ergebnisspalte rechts listet jedes Format mit einer Kopieren-Schaltfläche daneben, darunter Use this date. Unter dem Baukasten wird ein eingefügtes 04/08/2008 als mehrdeutig gemeldet, mit der amerikanischen und der polnischen Lesart.
Unter dem Baukasten liegt die Gegenrichtung: 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 →

Ausprobieren