Chrono Mock
LimbaRomână

Ce dată ar trebui să testezi?

O jumătate din testarea cu date înseamnă mutarea ceasului. Cealaltă jumătate înseamnă să știi unde să-l muți. Un calculator online îți spune cât face nouăzeci de zile de azi încolo. Nu îți spune că răspunsul este o sărbătoare bancară sau că este ultima zi a trimestrului.

Calculatorul Chrono Mock. O listă de scenarii cu căutare și explicațiile lor coboară pe partea stângă, constructorul de date este la mijloc, iar coloana de rezultate din dreapta enumeră fiecare format, cu un buton de copiere lângă fiecare și Use this date sub ele. Sub constructor, o dată lipită, 04/08/2008, este raportată ca ambiguă, cu ambele citiri, americană și poloneză, afișate.
Sub constructor se află direcția inversă: 04/08/2008 lipit, și ambele citiri afișate, nu una singură ghicită.

Zile lucrătoare, cu sărbători reale

„Zece zile lucrătoare de acum” nu este aritmetică - depinde de calendarul cărei țări îl numeri. Aceeași dată de început, aceleași zece zile, două răspunsuri diferite:

$ 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

O zi diferență, iar calculatorul îți spune de ce dacă îl întrebi despre data din mijloc:

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

Statele Unite și Polonia vin ca calendare de referință, alese pentru că împreună exersează fiecare tip de regulă existent: date fixe, a n-a zi a săptămânii din lună, date calculate din Paște și regula americană după care o sărbătoare căzută într-o sâmbătă este respectată în vinerea precedentă. Adăugarea unei țări înseamnă un fișier de date, nu o modificare de cod.

Toate formatele deodată

Aplicația testată vrea data în forma pe care o așteaptă. În loc să te pună să convertești, calculatorul le afișează pe toate - plus o mască personalizată pentru cele care nu se potrivesc cu nimic 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)

Valoarea epoch nu este o coincidență - 2147483647 este exact cel mai mare număr pe care îl poate stoca un întreg cu semn pe 32 de biți, ceea ce este întregul motiv pentru care data contează.

Citirea unei date în sens invers

Direcția opusă este la fel de utilă: lipești o dată dintr-un jurnal și afli ce este. Când formatul este ambiguu - iar 04/08 este ambiguu în jumătate din lume - sunt afișate ambele citiri, în loc să fie ghicită una, pentru că din ghicit a pornit raportul de bug inițial.

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

La patru luni distanță, în zile diferite ale săptămânii. O dată ISO este neambiguă și este citită ca atare, iar ceva care nu este deloc o dată este refuzat, nu ghicit.

Construit din pași, nu dintr-o propoziție

Un moment este un punct de pornire plus pași, iar rezultatul intermediar este afișat după fiecare, așa că o expresie care produce un răspuns surprinzător îți arată unde a luat-o razna. Cinci tipuri de pași: deplasare cu o unitate, setarea orei din zi, sărirea la o limită de perioadă, mutarea la cea mai apropiată zi lucrătoare și reexprimarea într-un alt fus orar.

# Ultima secundă înainte să se încheie anul
chrono calc --base today --snap eoy

# Nouăzeci de zile lucrătoare de acum, în calendarul bancar american
chrono calc --base today --shift +90bd --calendar us-banking

# Optsprezece ani și o zi în urmă, pentru o verificare de vârstă
chrono calc --base today --shift -18y --shift -1d

Orice dată calculată merge direct într-o sesiune de înlocuire, iar --json emite același rezultat în formă pentru mașini. Datele care merită testate →

Încearcă-l