Skip to main content

Module time

Module time 

Source
Expand description

零依赖时间面:纪元纳秒 ↔ civil(年月日时分秒)双向换算。

Python 版 TickData.datetime 等字段用本地 naive datetime; Rust 版统一为 UTC 纪元纳秒(DtNs),本地化/展示层由使用方处理 (DESIGN.md 决定 8-A)。换算采用 Howard Hinnant 的 civil_from_days / days_from_civil 算法(公历 1582-10-15 起全域正确),均以单测钉死。

§可表达范围(重要)

DtNs = i64 纳秒 → 覆盖 1677-09-21T00:12:43.145224192Z .. 2262-04-11T23:47:16.854775807Z(DTNS_MIN/DTNS_MAX)。 超出范围时try_civil_to_nanos 返回 None,civil_to_nanos panic (对齐 Python datetime 超范围抛 ValueError 的失败面); 远日期(如股票 IPO 日 1990 前 / 交易所属历史日期)请用 Day 序数表达。

Structs§

Civil
civil 六元组 + 毫微段(一日内)。

Constants§

DTNS_MAX
DtNs 可表达的 civil 上界:2262-04-11T23:47:16.854775807Z。
DTNS_MIN
DtNs 可表达的 civil 下界近似:1677-09-21T00:12:43.145224192Z (即 i64::MIN 纳秒;换算取整到纳秒需 +1 才落在合法 civil 上)。
NANOS_PER_DAY
一天的纳秒数(86400 s,不涉闰秒)。
NANOS_PER_SEC
一秒的纳秒数。

Functions§

civil_from_days
纪元日序数 → civil (年, 月, 日)(Hinnant civil_from_days)。
civil_from_nanos
纪元纳秒 → civil(UTC 视角;除法对负纳秒采用 floor 保证越日正确)。
civil_to_nanos
civil → 纪元纳秒(以 civil 视作 UTC,无时区移位)。
days_from_civil
civil 纪元日天数 → 纪元日序数(Hinnant days_from_civil)。
days_in_month
某年某月的天数(月越界返回 0)。
format_civil
yyyy-mm-dd hh:mm:ss(.fffffffff 有 nanos 才显示) 文本(UTC 视角)。
from_system_time
SystemTime → 纪元纳秒(epoch 之前取负;独立函数,避免为基本类型 i64 实现外部 trait——orphan 规则)。
is_leap_year
闰年判定(公历规则)。
is_valid_civil
civil 合法性(月 1-12、日不超当月天数、时分秒纳秒在域内)。
now_nanos
当前时刻的纪元纳秒(SystemTime 视角)。
parse_civil
解析 "YYYY-MM-DD[ HH:MM[:SS[.fffffffff]]]"(亦接受 T 分隔与纯日期)。
trading_day
纪元纳秒所在交易日序数(向下取整,负纳秒同样正确)。
try_civil_to_nanos
civil → 纪元纳秒的可失败版本;严格校验日历合法性(含闰年 2 月)与 i64 范围。

Type Aliases§

Day
交易日序数:Unix 纪元起的天数(向下取整,含负数)。
DtNs
时间戳:Unix 纪元(The Epoch, 1970-01-01T00:00:00Z)起的纳秒。