Chrono Mock
IdiomaPortuguês (Brasil)

Qual data você deveria testar?

Metade do teste de datas é mover o relógio. A outra metade é saber para onde movê-lo. Uma calculadora on-line diz que dia será daqui a noventa dias. Ela não diz que esse dia é feriado bancário, nem que é o último dia do trimestre.

A calculadora do Chrono Mock. À esquerda, uma lista de cenários com busca e suas explicações, no centro o construtor de datas, e a coluna de resultado à direita lista cada formato com um botão de copiar ao lado e Use this date abaixo. Sob o construtor, um 04/08/2008 colado é apontado como ambíguo, com as leituras americana e polonesa.
Sob o construtor está o sentido inverso: 04/08/2008 colado, e as duas leituras mostradas em vez de uma adivinhada.

Dias úteis, com feriados reais

“Dez dias úteis depois” não é aritmética - depende do calendário de que país você está contando. Mesma data de início, mesmos dez dias, duas respostas diferentes:

$ 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

Um dia de diferença, e a calculadora diz por quê se você perguntar sobre a data intermediária:

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

Os Estados Unidos e a Polônia acompanham o programa como calendários de referência, escolhidos porque, juntos, exercitam todos os tipos de regra que existem: datas fixas, o n-ésimo dia da semana de um mês, datas calculadas a partir da Páscoa e a regra americana pela qual um feriado que cai em um sábado é observado na sexta-feira anterior. Adicionar um país é um arquivo de dados, não uma mudança de código.

Todos os formatos de uma vez

O aplicativo testado quer a data na forma que espera. Em vez de fazer você converter, a calculadora imprime todas - e uma máscara personalizada para as que não se encaixam em nenhum padrão.

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

Esse valor epoch não é coincidência - 2147483647 é exatamente o maior número que um inteiro de 32 bits com sinal comporta, que é toda a razão pela qual essa data importa.

Lendo uma data de trás para frente

O sentido contrário é igualmente útil: cole uma data tirada de um log e descubra o que ela é. Quando o formato é ambíguo - e 04/08 é ambíguo em metade do mundo -, as duas leituras são mostradas em vez de uma ser adivinhada, porque foi de um palpite que saiu o relatório de bug original.

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

Quatro meses de diferença, em dias da semana diferentes. Uma data ISO não é ambígua e é lida como tal, e algo que não é uma data de forma alguma é recusado em vez de adivinhado.

Montada com passos, não com uma frase

Um momento é um ponto de partida mais passos, e o resultado intermediário é mostrado depois de cada um, de modo que uma expressão que dá uma resposta surpreendente mostra onde desviou. Cinco tipos de passo: deslocar por uma unidade, definir a hora do dia, ajustar a um limite de período, ir para o dia útil mais próximo e reexpressar em outro fuso horário.

# O último segundo antes da virada do ano
chrono calc --base today --snap eoy

# Noventa dias úteis depois, no calendário bancário americano
chrono calc --base today --shift +90bd --calendar us-banking

# Dezoito anos e um dia atrás, para uma verificação de idade
chrono calc --base today --shift -18y --shift -1d

Qualquer data calculada vai direto para uma sessão de substituição, e --json emite o mesmo resultado em formato para máquinas. As datas que valem a pena testar →

Experimente