¿Qué fecha deberías probar?
La mitad de las pruebas de fechas es mover el reloj. La otra mitad es saber adónde moverlo. Una calculadora en línea te dirá qué día es dentro de noventa días. No te dirá que ese día es festivo bancario, ni que es el último día del trimestre.
04/08/2008 y se
muestran ambas lecturas en lugar de adivinar una.Días laborables, con festivos reales
«Diez días laborables después» no es aritmética - depende del calendario de qué país estés contando. Misma fecha de inicio, mismos diez días, dos respuestas distintas:
$ 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 día de diferencia, y la calculadora te dirá por qué si le preguntas por la fecha 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)
Estados Unidos y Polonia se incluyen como calendarios de referencia, elegidos porque entre los dos ejercitan todos los tipos de regla que existen: fechas fijas, el n-ésimo día de la semana de un mes, fechas calculadas a partir de la Pascua, y la regla estadounidense por la que un festivo que cae en sábado se observa el viernes anterior. Añadir un país es un archivo de datos, no un cambio de código.
Todos los formatos a la vez
La aplicación probada quiere la fecha en el formato que espera. En lugar de hacerte convertir, la calculadora los imprime todos - y una máscara personalizada para los que no encajan en ningún estándar.
$ 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)
Ese valor epoch no es casualidad - 2147483647 es exactamente el mayor número que cabe
en un entero de 32 bits con signo, que es toda la razón por la que esa fecha importa.
Leer una fecha al revés
El otro sentido es igual de útil: pega una fecha sacada de un registro y averigua qué es. Cuando
el formato es ambiguo - y 04/08 es ambiguo en medio mundo - se
muestran ambas lecturas en lugar de adivinar una, porque de adivinar salió el
informe de error 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)
Cuatro meses de diferencia y en días de la semana distintos. Una fecha ISO no es ambigua y se lee como tal, y algo que no es una fecha en absoluto se rechaza en lugar de adivinarse.
Construido con pasos, no con una frase
Un momento es un punto de partida más pasos, y el resultado intermedio se muestra tras cada uno, de modo que una expresión que da una respuesta sorprendente te enseña dónde se torció. Cinco clases de paso: desplazar por una unidad, fijar la hora del día, ajustarse a un límite de periodo, pasar al día laborable más cercano y reexpresar en otra zona horaria.
# El último segundo antes de que cambie el año chrono calc --base today --snap eoy # Noventa días laborables después, en el calendario bancario estadounidense chrono calc --base today --shift +90bd --calendar us-banking # Dieciocho años y un día atrás, para una comprobación de edad chrono calc --base today --shift -18y --shift -1d
Cualquier fecha calculada pasa directamente a una sesión de sustitución, y --json
emite el mismo resultado en formato para máquinas.
Las fechas que merece la pena probar →