Fechas y horas
La referencia temporal completa: fechas, aritmética de duraciones, relojes, zonas horarias, marcas de tiempo/ISO, Timespan, timecode de vídeo, calendarios laborales y fechas especiales.
Numlex trata las fechas y las horas como magnitudes de primera clase con una gramática
estricta y acotada. Una línea coincide exactamente con un patrón de fecha u hora o se queda como
prosa normal: May 5 + 3 weeks funciona, May 5 + 43 es un error y una palabra de mes
suelta no es una fecha. La aritmética de calendario es por componentes sobre el calendario
gregoriano local, así que los cambios de horario de verano no
pueden desplazar un día.
Esta página es la referencia temporal completa: fechas de calendario, aritmética de
duraciones, relojes y laptime, zonas horarias, marcas de tiempo e ISO 8601, la notación
Timespan, timecode de vídeo y fotogramas, calendarios laborales, fechas especiales, sus
dependencias de Ajustes y las reglas estrictas de error.
Fechas de calendario
<date> [ <sign> <integer> <duration> ... ]
<date> := today | tomorrow | yesterday
| <month> <day>
| <month> <day>, <year>
| <day> <month> [<year>]
<duration> := day(s) | week(s) | month(s) | year(s)
Todas las palabras son inglesas y no distinguen mayúsculas; el signo es + o − (el -
ASCII también vale). Meses, abreviados y completos:
| # | Abreviaturas | Nombre completo |
|---|---|---|
| 1 | jan | january |
| 2 | feb | february |
| 3 | mar | march |
| 4 | apr | april |
| 5 | may | may |
| 6 | jun | june |
| 7 | jul | july |
| 8 | aug | august |
| 9 | sep, sept | september |
| 10 | oct | october |
| 11 | nov | november |
| 12 | dec | december |
today, tomorrow y yesterday se resuelven contra la fecha local capturada y se combinan
con duraciones. Los periodos compuestos se aplican componente a componente del calendario:
March 12 + 3 weeks 2 days → Apr 4, May 10 - 1 week 3 days. Cada componente está
limitado a 1.000.000.
El resultado muestra el año cuando la entrada lo especificaba o cuando queda fuera del año de entrada. El ancla es el mediodía local, así que los cambios de DST nunca mueven el día.
today → today (per the local calendar)
tomorrow + 1 month
yesterday - 2 weeks
May 5 → May 5 (current year)
May 5, 2026 + 30 days → Jun 4, 2026
5 May 2026
dec 31
Errores de sintaxis de fechas:
- Los periodos de más de 1.000.000 son un error silencioso.
Feb 30tiene forma de fecha pero no es válida: error silencioso.May 5 + 43(un número sin palabra de duración) es un error, nunca se reduce a aritmética normal.May 5 + 43 days extra— cola tras una fecha válida — es un error.- Una palabra de mes suelta (
may) no es una fecha; se queda como prosa.
Aritmética de duraciones
Varias unidades de tiempo fijas seguidas se leen como una sola duración:
1 h 45 min,1 hour 45 minutes,2 hr 5 mins,1 day 2 hours 30 min,1 min 250 ms,1 week 2 days.- Formas pegadas seguras:
1h45min,45min,30sec,500ms,2hr,2wks,1day2hours30min. Los alias pegados salen solo de una lista blanca (ms s sec secs second(s) min mins minute(s) h hr hrs hour(s) day(s) week(s) wk wks); unampegada suelta nunca son minutos (5m= 5.000.000,5 m= metros) y unaspegada suelta no se acepta. - Las duraciones compuestas usan las unidades fijas de
msaweek. Las unidades calendáricas medias (mo,yr,quarter (time)) y las unidades ajenas no se componen implícitamente:1 m 20 cmes un error y1 mo 2 daysno se compone.
Los componentes pueden ir en cualquier orden y repetirse; los valores se suman. El grupo se liga en un único operando primario antes de multiplicar o dividir:
1 h 30 min / 3 → 30 min (not 1 h 10 min)
(1 h 20 min) × 2 → 2 h 40 min
3 × (1 h 15 min) → 3 h 45 min
1 h 45 min + 30 min → 2 h 15 min
2 hr 10 min - 45 min → 1 h 25 min
1 day 2 h + 90 min → 1 day 3 h 30 min
1 week 2 days - 1 day → 1 week 1 day
2 min 30 sec × 3 → 7 min 30 s
1 min 250 ms + 750 ms → 1 min 1 s
1.5 h + 30 min → 2 h
Una duración sigue siendo una magnitud tipada real (dimensión T¹, una unidad de tiempo
real, su valor en esa escala), no una cadena ni segundos adimensionales. Los paréntesis, el
menos unario, las variables y las constantes que contienen tiempo funcionan
(focus time = 1 h 30 min, luego focus time + 15 min = 1 h 45 min), y las duraciones se
pueden tokenizar como otras magnitudes.
La salida usa una descomposición canónica natural (semanas, días, horas, minutos, segundos;
milisegundos para un resto subsegundo), omite los componentes cero, normaliza los acarreos e
imprime un solo signo: 2 h 15 min, 1 day 3 h 30 min, 7 min 30 s, -30 min, 500 ms.
Una conversión explícita reinicia la forma natural a un resultado de una sola unidad:
1 h 30 min to min = 90 min, 1 h 30 min in hours = 1.5 h,
1 h 30 min as seconds = 5400 s.
Las velocidades y unidades derivadas nunca se convierten en duración (90 km / 3 h =
30 km/h), y la sintaxis de fechas mantiene la prioridad (May 5 + 2 days es una fecha). Las
duraciones no tienen controles de notación ni de redondeo por respuesta.
Relojes y laptime
La sintaxis de reloj se comprueba antes de las unidades mixtas y las fechas:
3:30pm + 2 hours 15 minutes → 5:45 pm
3:30pm - 2 hours 15 minutes → 1:15 pm
11:30pm + 45 min → Tomorrow 12:15 am
now + 3 hours 25 minutes → local wall time + 3 h 25 min
01:02:03 + 01:09:54 → 02:11:57 (elapsed time / laptime)
00:00:01.5 + 00:00:01 → 00:00:02.50
7:30am to 8:45pm → 13 h 15 min (interval forward)
4pm to 3am → 11 h
3:30pm as laptime → 15:30:00
Se aceptan h:mm, h:mm:ss, h am/pm y 4pm; AM/PM no distingue mayúsculas y puede ir
pegado o separado por un espacio. Los minutos y segundos son 0…59, la hora de 12 horas es
1…12 y la de 24 horas es 0…23 (25:00 es un error estricto). La suma y la resta trabajan
sobre componentes de pared, así que un cambio de DST nunca desplaza los minutos pedidos,
y un cambio de día imprime Yesterday/Today/Tomorrow. clock + clock
(3:30pm + 3:30pm) es un error estricto; un h:mm:ss suelto sin AM/PM sigue siendo tiempo
transcurrido, no una hora del día. La presentación sigue la región: 12 horas para
legacy/Norteamérica, 24 horas para Europa y el ciclo horario de la localización para System.
Las filas de reloj se excluyen del Total, no tienen notación ni redondeo (solo Copy/Delete) y
no pueden convertirse en tokens numéricos.
Zonas horarias
time in Paris → current time in the zone
Tokyo time → same, "<place> time" form
date in Vancouver → date in the zone
6pm Sydney in Chicago → 3:00 am
2am PST to GMT → 10:00 am
3pm GMT+8 to Paris → 9:00 am
7:30am LAX to Japan → 11:30 pm
time difference between Chicago and Paris → 7 h
difference between PDT & AEST → 17 h
Una fuente se resuelve por el catálogo offline completo: identificadores y alias IANA,
ciudades (con el calificador City, CC), nombres de países, códigos de país, códigos
IATA/ICAO, abreviaturas fijas (EST/EDT/CST/CDT/MST/MDT/PST/PDT/AKST/AKDT/HST, AEST/AEDT/
ACST/ACDT/AWST/NZST/NZDT/BST/CET/CEST/EET/EEST/MSK/JST/KST/HKT/SGT) y
GMT/UTC/GMT±H[:MM]. La hora de pared de la fuente se ancla a la fecha capturada en
su zona, se convierte en un único instante absoluto y se muestra en la zona destino, de
modo que A → B → A conserva el instante; los cambios reales de DST se respetan y una hora de
origen inexistente es un error estricto. Un lugar desconocido en una línea de zona horaria
es un error estricto. Un 6pm suelto, las fechas y las líneas geográficas se tratan por sus
propias reglas. Los alias personalizados (Ajustes → Dates & Times) solo anulan nombres conocidos/identificadores IANA y viven en la app, nunca en .nlx.
Catálogo offline de zonas horarias
La app incluye un catálogo de zonas horarias (unos 1 MB): identificadores y alias IANA, ciudades con al menos 100.000 habitantes, país → zona de la capital e IATA/ICAO → zona. Los datos proceden de fuentes públicas (IANA tzdata, GeoNames, airportsdata) y se usan totalmente offline; no se necesita red.
Marcas de tiempo e ISO 8601
La sintaxis de marcas de tiempo se comprueba antes de las conversiones de unidades y del fallback normal de fechas:
current timestamp → 1,554,112,800 (number from captured now)
April 1, 2019 3:30pm as iso8601 → 2019-04-01T15:30:00+02:00
2019-04-01T15:30:00 to date → Apr 1, 2019 3:30:00 pm
April 1, 2019 to timestamp → 1,554,112,800
1559740303.48 to date → Jun 5, 2019 3:11:43 pm
1733823083000 to date → Dec 10, 2024 10:31:23 am
Los segundos son tiempo Unix desde 1970-01-01T00:00:00Z; se admiten valores fraccionarios
finitos. Los valores de 1e12 o más se tratan como milisegundos (1733823083000 to date). Una
fecha sin hora ligada a to timestamp se ancla al mediodía local (seguro ante DST). La forma
ISO acepta Z, ±HH:MM, segundos opcionales y parte fraccionaria; un desplazamiento
explícito se conserva como zona de presentación y, si no, se usa tu zona local.
La salida ISO es yyyy-MM-dd'T'HH:mm:ssXXX; la salida de fecha y hora
sigue el estilo regional de 12/24 horas con un orden inglés fijo
(Apr 1, 2019 3:30 pm). Los valores inválidos, inexistentes (hueco de DST) y desbordados
son errores estrictos. Las filas de fecha/ISO se excluyen de los Totales inline y de pie y de
la cadena numérica Previous Answer; los tokens sobre ellas quedan inactivos con seguridad.
Timespan
La notación Timespan se elige globalmente (Numbers → Default answer format) o por
respuesta (Number Format en el menú contextual) y se aplica solo a magnitudes de
dimensión temporal; cualquier número no temporal cae en Automatic. El
sufijo explícito as timespan funciona al margen del ajuste:
5.5 minutes as timespan → 5 min 30 s
4.54 hours as timespan → 4 hours 32 minutes 24 seconds
72 days as timespan → 10 weeks 2 days
3 hours 5 minutes 10 seconds → 3 h 5 min 10 s
3h 5m 10s in seconds → 11,110 s
El formateador descompone con avidez usando unidades medias yr = 365.2425 d y
mo = 30.436875 d, luego semanas, días, horas, minutos, segundos y ms; imprime un
decimal, omite los componentes cero y traslada el redondeo al componente mayor. Los yr/mo
medios son solo factores lineales: la aritmética de calendario (+ 1 month) sigue usando
componentes de Calendar. Gramática de unidades pegadas: dentro de una cadena de duración
ya probada 3h 5m 10s, m y s significan minutos y segundos; 5m (5.000.000), 5 m
(metros) y 10s sueltos no cambian. in seconds/in minutes/… reinicia a una presentación
estándar de una sola unidad. La misma gramática tipada sirve a líneas normales, asignaciones
y expresiones de Answer Token.
Timecode de vídeo y fotogramas
La sintaxis de timecode se comprueba antes de los relojes y las unidades mixtas:
03:10:20:05 at 30 fps + 50 frames → 03:10:21:25
00:10:20:50 @ 60 fps + 10 minutes → 00:20:20:50
00:30:10:00 @ 24 fps in frames → 43,440 frames
43,440 frames @ 24 fps → 00:30:10:00
03:10:20:05 at 30 fps + 03:10:20:010 → 06:20:40:15
03:10:20:05 at 12 fps - 00:20:35:00 → 02:49:45:05
30 fps × 3 minutes → 5,400 frames
15.6k frames / 24 fps → 650 s
Los fotogramas se cuentan con exactitud (nunca con segundos redondeados): el fps es un entero de
1 a 1000, y no existe sintaxis drop-frame.
Dentro de una expresión de timecode fps significa fotogramas por segundo; fuera de ella se mantiene el alias de
velocidad anterior fps = ft/s. El FPS es obligatorio en toda operación; las frecuencias en
conflicto, la falta de fps, los valores fuera de rango, el desbordamiento del recuento de fotogramas y los
códigos rotos son errores estrictos. El campo de fotogramas normaliza los acarreos y se
imprime con al menos dos dígitos (se acepta la entrada :010). Las filas de timecode y
fotogramas se excluyen del Total, del redondeo y de la cadena numérica Previous Answer; los
tokens sobre ellas están inactivos.
Calendarios laborales y festivos
Un día laborable es de lunes a viernes menos los festivos públicos de la región seleccionada. Los rangos de fechas son start-exclusive/end-inclusive; un año ausente usa el año actual capturado. Una región o un año no admitidos son un error estricto en lugar de saltarse los festivos en silencio.
workdays in 3 weeks → 15 workdays
10 March to 17 March in workdays → 5 workdays
workdays from April 12 to June 15 → 44 workdays
$500/workday × 4 weeks → $10,000.00
work hours in June → 6 day 16 h
work hours between March 12 and March 25 → 3 day
55h in work days → 6.875 workdays
December 24 + 2 workdays → Dec 29
Alias: workday(s), work day(s), business day(s), weekday(s); la consulta
weekday on <date> y la prosa normal no se capturan. Las semanas sin fecha cuentan cinco
días laborables por semana. Las horas de trabajo son duraciones tipadas; una tarifa monetaria
por día laborable conserva su forma de divisa; las horas por día laborable salen de Ajustes
(1…24). Los festivos proceden del catálogo offline integrado (25
países, 2019–2035) y no se usa la red; una región o un año fuera del catálogo es un error.
Fechas especiales
Estas fechas especiales están integradas:
Easter → Apr 20 (captured current year)
Easter 2027 → Mar 28, 2027
Christmas → Dec 25
days until Christmas → 344 days
days until Easter → 95 days
Easter 2027 + 2 days → Mar 30, 2027
La Pascua usa el cómputo gregoriano; la ocurrencia más cercana para days until
toma la fecha de este año si aún está en el futuro y, si no, la del siguiente. Un nombre de
festivo desconocido (days until Festivus) es un error estricto, y la prosa que contiene
christmas/easter no se captura. Navidad es siempre el 25 de diciembre.
Dependencias de Ajustes
Las fechas y horas se calculan a partir de un único now capturado por hoja, el calendario
gregoriano y la zona locales y el estilo horario regional (12/24): legacy/Norteamérica es de 12 horas, Europa occidental/oriental es de 24
horas y System sigue el ciclo horario de la localización.
Los ajustes de fecha y hora persistidos son:
- Hours per workday (1…24, por defecto 8), usado por las horas de trabajo y las conversiones de días laborables.
- Holiday region (
automaticpor defecto); los días laborables omiten los festivos públicos de esa región y las regiones no admitidas fallan estrictamente en consultas de días laborables con fecha. - Zonas horarias personalizadas, hasta 100, cada una con un nombre y un identificador IANA.
Estas preferencias son globales de la app y nunca entran en una exportación .nlx ni en una hoja.
recalcula en cada pasada y nunca se guarda.
Totales, tokens y errores
- Las filas de reloj, fecha, marca de tiempo/ISO y timecode se excluyen de los Totales inline y de pie, no tienen notación ni redondeo y no entran en la cadena numérica Previous Answer (los tokens sobre ellas quedan inactivos).
- Las duraciones son magnitudes tipadas reales: se propagan por variables, constantes y tokens, y se comportan como otras magnitudes en las expresiones.
- Los lugares desconocidos, las regiones/años laborales no admitidos, las fechas inválidas o inexistentes, las horas inválidas, la falta de fps y los valores desbordados son errores estrictos, nunca un número adivinado.
Relacionado
- Unidades y cantidades — el catálogo de unidades, las unidades derivadas y los alias de velocidad con los mismos límites de unidades de tiempo.
- Ajustes y apariencia — la categoría Dates & Times de la app y el ajuste de formato de respuesta en Numbers.
- Cálculos naturales — ejemplos de fechas y horas en hojas cotidianas.