10

Javascript 中的对象是否Date曾经使用过非公历?

MDNMSDN文档概述了对象上的方法并Date参考UTCIETF 兼容的 RFC 2822 时间戳

维基百科文章提到

日期通常使用公历来标识,但也可以使用儒略日数。

MDN 和 MSDN 文档只是说非 UTC 方法是指“本地时间”,但没有定义“本地时间”是什么。

我正在与一个 web 服务接口,它给我一些数据,其中包括一年中的一天字段,我需要将其与当前的一年中的一天进行比较。我很清楚依赖用户机器上的准确时间的缺陷,并且对由错误的时区和虚假日期设置导致的任何问题都很好。

不过,我担心不使用公历的语言环境中的用户,以及如果我使用 、 和 方法计算一年中的日期,他们的浏览器会.getDate()返回.getMonth()什么.getFullYear()

那么,在实践中,Javascript 中的“本地时间”是否曾经指代非公历系统,例如希伯来历或波斯历?

4

3 回答 3

2

我刚刚通过将我的计算机 (Mac OS X 10.7.4) 设置为使用希伯来日历进行了测试,并且 Date 对象的行为在 Safari、Firefox 或 Chrome 中没有受到影响。看起来它总是使用公历。

于 2012-05-23T16:46:30.987 回答
2

Re: Javascript 中的 Date 对象是否曾经使用过非公历?

不。我没有看到任何关于 Javascript 日期对象可以使用儒略历系统的说法的备份。

但是,您可以将 Javascript 日期对象(公历日期)转换为Julian DayJulian Date

朱利安日

儒略日用于天文学界科学使用的儒略日期 (JD) 时间测量系统,表示自公元前 4713 年 1 月 1 日格林威治中午以来的时间间隔(以天和一天的分数为单位)。朱利安日期被国际天文学联合会推荐用于天文学。

朱利安日期

儒略日期一词被广泛用于指一年中的某一天(序数日期),尽管这种用法并不严格符合某些国际组织制定的标准。

*以上引用的来源是维基百科文章,Julian_day

请注意,这两种格式都不涉及月份,因为“儒略日”和“儒略日”是公历中一天的特定表示形式。您可以通过儒略日定义使用公历日期来说明这一点:“4713 BC Greenwich noon”

于 2012-05-23T16:46:39.663 回答
0

ECMAScript规范(第 3 版第 5 版在这方面几乎相同,但我引用第 5 版):

15.9.1.9 当地时间

从 UTC 到本地时间的

LocalTime(t) = t + LocalTZA + DaylightSavingTA(t)

转换由 定义 从本地时间到 UTC 的转换由

UTC(t) = t – LocalTZA – DaylightSavingTA(t – LocalTZA)

Note定义,UTC(LocalTime(t))不一定总是等于t

LocalTZA指本地时区调整,DaylightSavingTA是针对夏令时的调整。

我没有发现任何浏览器(当前或历史)的证据,当在用户的机器上启用非公历时会做任何不同的事情。

于 2012-06-12T20:37:36.070 回答