http.date
HTTP 日期(RFC 9110 §5.6.7 IMF-fixdate;RFC 1123/5322 形) 形态(与 http/parse.ct 头注同源): ① 零 use 纯模块(不 import std.time —— 消费方双 use 菱形 E5020 规避 + http 半层零 use 纪律;民历算法与 std/time.ct 同源(Hinnant civil_from_days/days_from_civil)本地复制,I64 域(time.ct 为 I32 z 域, epoch 全域 -62135596800..253402300799 需 I64;漂移风险由黄金向量钉住)。 ② 域:epoch 秒(I64)↔ 公历年 [1,9999];format 域外返回 ""(文档化); parse 域外 None。 ③ 严格口径(v1,登记):只受 IMF-fixdate("Sun, 06 Nov 1994 08:49:37 GMT"); RFC 850(asl, "Sunday, 06-Nov-94")与 asctime("Sun Nov 6 08:49:37 94") 遗留形拒(RFC 9110 §5.6.7 允许接收方拒;生成恒 IMF-fixdate);GMT 字面,UT/Z/数字时区拒;星期名与日期不符拒(9110 允许拒,取严); 秒 60(闰秒)拒(9110 注生成器不得产闰秒,受面取严);大小写敏感 (IMF-fixdate 语法字面)。 ④ 发射面纪律:无闭包、无方法调用、无 if/match 表达式,while 体仅标量 局部((f)/(g));Option 消费用 match 形助手(C13a)。 ⑤ 结构 DCiv 仅模块内用(跨模块 struct 成员读不可发射,(h) —— pub 面全 标量化,不泄结构)。
pub fn
| Signature | Returns | Description |
|---|---|---|
http_date_format(epoch_s: I64) |
Str |
RFC 1123 IMF-fixdate:epoch 秒 → "Sun, 06 Nov 1994 08:49:37 GMT"。 年份域 [1,9999] 外返回 ""(文档化)。 6 域提升(登记,同 std/time.ct time_to_epoch_s 解法):解释器整数按【值域】 定宽——字面量/形参值落在 I32 域即按 I32 判溢出乘(z*86400 在 2038~2100 年 段溢 I32 而 |epoch|>I32max 的入参反而不溢)—— 故 z 一律经 w - w + z提升至 6 域再做秒换算。 |
http_date_parse(s: Str) |
Option[I64] |
严格 IMF-fixdate 解析(口径见头注③):返回 epoch 秒。长度恰 29;星期名 与日期一致性校验(取严)。 |
http_date_weekday(epoch_s: I64) |
I32 |
星期(0 = 星期日 … 6 = 星期六);format 同域判定不适用 —— 纯算术,域外 亦返模值(测试面用)。 |
http_date_get(o: Option[I64], dft: I64) |
I64 |
---- Option[I64] 消费助手(match 形;C13a,enc/enc/time 同款)---- |
http_date_some(o: Option[I64]) |
Bool |
— |