Chrono Mock
LinguaItaliano

Quale data dovresti testare?

Metà del test sulle date è spostare l'orologio. L'altra metà è sapere dove spostarlo. Un calcolatore online ti dirà che giorno sarà tra novanta giorni. Non ti dirà che quel giorno è una festività bancaria, né che è l'ultimo giorno del trimestre.

Il calcolatore di Chrono Mock. A sinistra scorre un elenco di scenari con ricerca e le loro spiegazioni, al centro c'è il costruttore di date, e la colonna dei risultati a destra elenca ogni formato con un pulsante di copia accanto e Use this date sotto. Sotto il costruttore, un 04/08/2008 incollato è segnalato come ambiguo, con le letture americana e polacca.
Sotto il costruttore c'è la direzione inversa: 04/08/2008 incollato, e entrambe le letture mostrate invece di una indovinata.

Giorni lavorativi, con i festivi veri

«Dieci giorni lavorativi dopo» non è aritmetica - dipende dal calendario di quale paese stai contando. Stessa data di partenza, stessi dieci giorni, due risposte diverse:

$ 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

Un giorno di differenza, e il calcolatore ti dirà perché se gli chiedi della data intermedia:

$ 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)

Stati Uniti e Polonia vengono forniti come calendari di riferimento, scelti perché fra i due mettono alla prova ogni tipo di regola esistente: date fisse, l'n-esimo giorno della settimana di un mese, date calcolate a partire dalla Pasqua e la regola americana per cui un festivo che cade di sabato viene osservato il venerdì precedente. Aggiungere un paese è un file di dati, non una modifica del codice.

Tutti i formati insieme

L'applicazione testata vuole la data nella forma che si aspetta. Invece di farti convertire, il calcolatore le stampa tutte - più una maschera personalizzata per quelle che non rientrano in nessuno standard.

$ 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)

Quel valore epoch non è un caso - 2147483647 è esattamente il numero più grande che un intero con segno a 32 bit può contenere, ed è l'intera ragione per cui quella data conta.

Leggere una data al contrario

L'altra direzione è altrettanto utile: incolla una data presa da un log e scopri che cos'è. Quando il formato è ambiguo - e 04/08 è ambiguo in mezzo mondo - vengono mostrate entrambe le letture invece di indovinarne una, perché è dall'indovinare che veniva la segnalazione di bug originale.

$ 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)

Quattro mesi di distanza, in giorni della settimana diversi. Una data ISO non è ambigua e viene letta come tale, e qualcosa che non è affatto una data viene rifiutato invece di essere indovinato.

Costruita a passi, non da una frase

Un momento è un punto di partenza più dei passi, e il risultato intermedio viene mostrato dopo ciascuno, così un'espressione che dà una risposta sorprendente ti fa vedere dove ha svoltato. Cinque tipi di passo: spostare di un'unità, impostare l'ora del giorno, agganciarsi a un confine di periodo, spostarsi al giorno lavorativo più vicino e riesprimere in un altro fuso orario.

# L'ultimo secondo prima del cambio d'anno
chrono calc --base today --snap eoy

# Novanta giorni lavorativi dopo, nel calendario bancario americano
chrono calc --base today --shift +90bd --calendar us-banking

# Diciotto anni e un giorno indietro, per un controllo dell'età
chrono calc --base today --shift -18y --shift -1d

Qualsiasi data calcolata passa direttamente in una sessione di sostituzione, e --json emette lo stesso risultato in forma leggibile da una macchina. Le date che vale la pena testare →

Provalo