读取浏览器所在的本地时区偏移与当前页面可见的饼,供本地时间格式化和语言偏好使用。
源码浏览已生成;不能解析的文件以纯文本展示,不表示通过类型检查。
# 网页环境接口规范 0.1.0
本包提供浏览器页面所处环境的两项只读事实:**本地时区偏移**与**当前页面可见的饼**(cookie)。前者让豫言应用能把 Unix 毫秒换算成用户本地时间并按自己的格式显示(豫言标准库没有时区数据);后者用来读取语言偏好之类由页面其他部分写下的小值。本包全部只读,不设置饼、不改时区。应用依赖本包后,全部函数都必须实现。
## 函数
### `读取本地时区偏移分钟 : 整数 → 整数`
参数是 Unix 毫秒(自 1970-01-01T00:00:00Z 起,可为负)。返回浏览器所在时区在**该时刻**相对 UTC 的偏移分钟数,**东为正、西为负**:北京时间(1992 年起)恒为 480,日本 540,美国东部冬令时 −300、夏令时 −240,印度 330。按该时刻当地的夏令时与历史规则计算;历史上不是整分钟的偏移(如 1900 年前的某些城市)四舍五入为整分钟。毫秒的绝对值超过 8640000000000000 时抛事故。
本地时间 = Unix 毫秒 + 偏移分钟 × 60000,再按 UTC 历法拆成年月日时分秒即可,星期、月份名与格式由应用自定。(注意:这与 JavaScript `getTimezoneOffset()` 符号相反。)
### `读取页面饼 : 字符串 → (爻 合 字符串)`
读取当前页面**可见**的饼里指定名称的值:名称须完全相同(区分大小写)。存在时返回(阳,值),值**原样**返回,宿主不做 URL 解码;不存在、浏览器禁用饼,或该饼带 `HttpOnly`(脚本不可见)时返回(阴,空字符串)。名称为空、超过 256 个 UTF-16 码元,或含 `=`、`;`、空白、控制字符时抛事故。同名的饼有多个(不同路径)时,取浏览器给出的第一个。
## 一致性样例
1. 在东八区,`读取本地时区偏移分钟(0)` 为 480;在美国东部,2026-01-01 的毫秒得 −300,2026-07-01 的毫秒得 −240。
2. 页面饼 `yuyan_lang=wen; 别的=x`:`读取页面饼("yuyan_lang")` 为(阳,“wen”);`读取页面饼("yuyan")` 为(阴,“”);`读取页面饼("别的")` 为(阳,“x”)。
3. 饼值为 `a%20b` 时返回(阳,“a%20b”),不解码。
4. `读取页面饼("a b")`、`读取页面饼("")`:抛事故。
## 边界
本包不规定:写饼与删饼、`document.cookie` 的属性、第三方饼、时区名称与区域设置(`Intl`)、`navigator.language`。日期格式化、星期与月份名属应用库。
# 网页环境之约 0.1.0 此包供浏览器页所处之境二事,皆只读:**本地时区之偏**与**当前页所见之饼**(cookie)。前者令豫言之客得以 Unix 毫秒换为用户本地之时而自定其式(豫言标准库无时区之数);后者用以读语言之好等由页中他处所书之小值。此包全然只读,不设饼,不改时区。客依此包,诸术皆当具。 ## 诸术 ### 读取本地时区偏移分钟:整数,返整数 参数乃 Unix 毫秒(自一九七零年一月一日零时世界协调时起,可负)。返浏览器所在时区于**彼刻**较世界协调时之偏分钟数,**东正西负**:北京时间(一九九二年起)恒为四百八十,日本五百四十,美国东部冬令时负三百、夏令时负二百四十,印度三百三十。依彼刻当地之夏令时与历史之规而算;历史上非整分之偏(如一九零零年前某些城邑)四舍五入为整分。毫秒之绝对值逾八点六四乘十之十五次方则发事故。 本地之时 = Unix 毫秒 + 偏分钟 × 六万,复以世界协调时之历拆为年月日时分秒即得;星期、月名与式,客自定之。(注:此与 JavaScript 之 getTimezoneOffset 其号相反。) ### 读取页面饼:字符串,返(爻、字符串) 读当前页**所见**之饼中指定名之值:名须全同(分大小写)。有则返(阳,值),值**原样**返,宿主不解码;无、浏览器禁饼,或此饼带 HttpOnly(脚本不可见)则返(阴,空文)。名空、逾二百五十六 UTF-16 码元,或含等号、分号、空白、控制字符则发事故。同名之饼有多(异路径)者,取浏览器所示之第一。 ## 一致性之例 1. 处东八区,读取本地时区偏移分钟(零)为四百八十;处美国东部,二零二六年一月一日之毫秒得负三百,七月一日之毫秒得负二百四十。 2. 页面饼 `yuyan_lang=wen; 别的=x`:读取页面饼(“yuyan_lang”)为(阳,“wen”);读取页面饼(“yuyan”)为(阴,“”);读取页面饼(“别的”)为(阳,“x”)。 3. 饼值为 `a%20b` 则返(阳,“a%20b”),不解码。 4. 读取页面饼(“a b”)、读取页面饼(“”):发事故。 ## 界 此包不定:写饼与删饼、饼之属性、第三方之饼、时区之名与区域设置(Intl)、navigator.language。日期之式、星期与月名,属客之库。