Numlex 文档
语法参考
反馈问题

日期与时间

完整的时间参考:日期、时长运算、时钟、时区、时间戳/ISO、Timespan、视频时间码、工作日历和特殊日期。

Numlex 把日期和时间视为一等量值,并配有严格、有界的语法。一行要么精确匹配某个日期或时间模式, 要么保持为普通文字——May 5 + 3 weeks 有效,May 5 + 43 是错误,单独的月份单词不是日期。 日历运算按本地公历的组成部件进行,因此夏令时切换不会移动日期。

本页是完整的时间参考:日历日期、时长运算、时钟与 laptime、时区、时间戳与 ISO 8601、 Timespan 记法、视频时间码与帧、工作日历、特殊日期、它们对设置的依赖以及严格的错误规则。

日历日期

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

所有单词均为英文且不区分大小写;符号是 + 或 −(ASCII - 也可)。月份,缩写与全称:

#缩写全称
1janjanuary
2febfebruary
3marmarch
4aprapril
5maymay
6junjune
7juljuly
8augaugust
9sep, septseptember
10octoctober
11novnovember
12decdecember

today、tomorrow 和 yesterday 依据捕获的本地日期解析,并可与时长组合。复合周期按日历 部件逐项应用:March 12 + 3 weeks 2 days → Apr 4,May 10 - 1 week 3 days。每个部件 上限为 1,000,000。

当输入指定了年份,或结果落在输入年份之外时,结果会显示年份。锚点是本地正午,因此 DST 切换 永远不会移动日期。

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

日期语法错误:

  • 周期超过 1,000,000 是静默错误。
  • Feb 30 形似日期但无效——静默错误。
  • May 5 + 43(数字后没有时长词)是错误,绝不会被降级为普通算术。
  • May 5 + 43 days extra——有效日期后的多余内容——是错误。
  • 单独的月份单词(may)不是日期;它保持为普通文字。

时长运算

连续多个固定时间单位会被读作一个时长:

  • 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。
  • 安全紧贴形式:1h45min、45min、30sec、500ms、2hr、2wks、 1day2hours30min。紧贴别名只来自白名单 (ms s sec secs second(s) min mins minute(s) h hr hrs hour(s) day(s) week(s) wk wks);单独的紧贴 m 绝不是分钟(5m = 5,000,000,5 m = 米), 单独的紧贴 s 不被接受。
  • 复合时长使用从 ms 到 week 的固定单位。平均日历单位(mo、yr、quarter (time)) 和无关单位不会隐式组合:1 m 20 cm 是错误,1 mo 2 days 不组合。

部件可以任意顺序出现并可重复;数值相加。该分组在乘法或除法之前绑定为一个主操作数:

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

时长仍是真正的类型化量值(维度 T¹、真实时间单位、其刻度上的值),而不是字符串,也不是 无量纲秒数。括号、一元负号、含时间的变量和常量都可用 (focus time = 1 h 30 min,然后 focus time + 15 min = 1 h 45 min),时长也可以像其他 量值一样生成 token。

输出使用自然的规范拆分(周、天、小时、分钟、秒;亚秒余数用毫秒),省略零部件,规范化进位, 并只打印一个符号:2 h 15 min、1 day 3 h 30 min、7 min 30 s、-30 min、500 ms。 显式转换会把自然形式重置为单一单位结果: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。

速度与派生单位永远不会变成时长(90 km / 3 h = 30 km/h),日期语法保持优先级 (May 5 + 2 days 是日期)。时长没有逐答案的记法或舍入控制。

时钟与 laptime

时钟语法先于混合单位与日期处理:

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

接受的形式有 h:mm、h:mm:ss、h am/pm 和 4pm;AM/PM 不区分大小写,可紧贴或空格分隔。 分钟和秒为 0…59,12 小时制小时为 1…12,24 小时制为 0…23(25:00 是严格错误)。加减法基于 墙钟部件,因此 DST 切换不会移动所请求的分钟数,跨日会打印 Yesterday/Today/Tomorrow。 clock + clock(3:30pm + 3:30pm)是严格错误;不带 AM/PM 的裸 h:mm:ss 保持为经过时间, 而不是一天中的时刻。显示遵循区域:legacy/北美为 12 小时制,欧洲为 24 小时制,System 遵循 区域设置的小时周期。时钟行不计入 Total,没有记法或舍入(仅 Copy/Delete),也无法成为数字 token。

时区

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

来源通过完整的离线目录解析:IANA 标识符和别名、城市(带 City, CC 限定)、国家名称、 国家代码、IATA/ICAO 代码、固定缩写(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)以及 GMT/UTC/GMT±H[:MM]。来源墙钟时间锚定到其时区中捕获的日期,转换为一个绝对时刻, 再在目标时区显示,因此 A → B → A 保留时刻;真实的 DST 切换会被遵循,源时间不存在则是严格 错误。时区行上的未知地点是严格错误。裸 6pm、日期和地理行按各自规则处理。自定义别名 (Settings → Dates & Times)只覆盖已知的名称/IANA 标识符,并且只存在于应用中——绝不会进入 .nlx。

离线时区目录

应用内置一个时区目录(约 1 MB):IANA 标识符和别名、人口不少于 100,000 的城市、国家 → 首都时区、IATA/ICAO → 时区。数据来自公共来源 (IANA tzdata、GeoNames、airportsdata),完全离线使用,无需网络。

时间戳与 ISO 8601

时间戳语法先于单位转换和普通日期回退处理:

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

秒是从 1970-01-01T00:00:00Z 起的 Unix 时间;允许有限小数值。1e12 及以上的值会按毫秒 处理(1733823083000 to date)。不带时间的日期绑定到 to timestamp 时锚定到本地正午(对 DST 安全)。ISO 形式接受 Z、±HH:MM、可选秒和小数部分;显式偏移会保留为表示时区,否则使用 你的本地时区。ISO 输出为 yyyy-MM-dd'T'HH:mm:ssXXX;日期时间输出遵循区域 12/24 小时风格,并使用固定的英文顺序(Apr 1, 2019 3:30 pm)。无效、不存在(DST 缺口) 和溢出的值都是严格错误。日期/ISO 行不计入内联和页脚 Total,也不进入 Previous Answer 数字 链;其上的 token 安全地保持不活动。

Timespan

Timespan 记法在全局(Numbers → Default answer format)或逐答案(右键菜单中的 Number Format)选择,并且只适用于时间维度的量值;任何非时间数字都会回落到 Automatic。 显式 as timespan 后缀不受该设置影响:

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

格式器按平均单位 yr = 365.2425 d 和 mo = 30.436875 d,再按周、天、小时、分钟、秒和 ms 贪婪拆分;打印一位小数,省略零部件,并把舍入进位到最大部件。平均 yr/mo 只是线性 因子:日历运算(+ 1 month)仍使用 Calendar 部件。紧贴单位语法:在已证明的时长链 3h 5m 10s 内,m 和 s 表示分钟和秒;单独的 5m(5,000,000)、5 m(米)和 10s 不变。in seconds/in minutes/… 重置为单一标准表示。同一套类型化语法服务于普通行、赋值 和 Answer Token 表达式。

视频时间码与帧

时间码语法先于时钟和混合单位处理:

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

帧会被精确计数(绝不经过舍入后的秒数):fps 是 1 到 1000 的整数,不支持 drop-frame 语法。时间码表达式中 fps 表示每秒帧数;表达式外保留原有的速度别名 fps = ft/s。任何 运算都必须有 FPS;频率冲突、缺少 fps、超出范围、帧计数溢出和损坏代码都是严格错误。帧字段 会规范化进位,并至少打印两位数字(接受输入 :010)。时间码和帧行不计入 Total、舍入和 Previous Answer 数字链;其上的 token 不活动。

工作日历与节假日

工作日是周一至周五减去所选区域的公共节假日。日期范围是 start-exclusive/end-inclusive; 缺少年份时使用捕获的当前年份。不支持的地区或年份是严格错误,而不是静默跳过节假日。

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

别名:workday(s)、work day(s)、business day(s)、weekday(s);查询 weekday on <date> 和普通文字不会被捕获。无日期的周按每周五个工作日计算。工作时长是类型化 时长;每个工作日的金额费率保留货币形式;每个工作日的工时来自设置(1…24)。节假日来自 内置的离线目录(25 个国家,2019–2035),不使用网络;目录未覆盖的 地区或年份是错误。

特殊日期

这些特殊日期已内置:

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

复活节使用公历 computus;days until 的最近一次出现取今年的日期(若仍在未来), 否则取明年。未知节日名(days until Festivus)是严格错误,包含 christmas/easter 的 普通文字不会被捕获。圣诞节始终是 12 月 25 日。

设置依赖

日期和时间根据每个工作表捕获的一个 now、本地公历和时区以及区域小时样式(12/24)计算:legacy/北美为 12 小时制,西欧/ 东欧为 24 小时制,System 遵循区域设置的小时周期。

持久化的日期/时间设置:

  • Hours per workday(1…24,默认 8),供工作时长和工作日换算使用。
  • Holiday region(默认 automatic);工作日跳过该区域的公共节假日,不支持的地区会在 带日期的工作日查询中严格失败。
  • 自定义时区,最多 100 个,每个都有名称和 IANA 标识符。

这些偏好是应用全局的,绝不会进入 .nlx 导出或工作表。

合计、token 与错误

  • 时钟、日期、时间戳/ISO 和时间码行不计入内联和页脚 Total,没有记法或舍入,也不进入 Previous Answer 数字链(其上的 token 保持不活动)。
  • 时长是真正的类型化量值:它们通过变量、常量和 token 传播,并在表达式中像其他量值一样 工作。
  • 未知地点、不支持的工作日地区/年份、无效或不存在的日期、无效时钟值、缺少 fps 和溢出值 都是严格错误——绝不是猜测的数字。

相关

  • 单位与量值 — 单位目录、派生单位以及与时间单位边界相同的速度别名。
  • 设置与外观 — 应用中的 Dates & Times 类别和 Numbers 中的答案格式设置。
  • 自然计算 — 日常表中的日期和时间示例。

发现文档有问题? 在 GitHub 上反馈