【问题标题】:Does the Date object ever use a non-Gregorian calendar?Date 对象是否曾经使用过非公历?
【发布时间】:2012-05-23 15:54:12
【问题描述】:

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

MDNMSDN 文档概述了 Date 对象上的方法并引用 UTCIETF-compliant RFC 2822 timestamps

维基百科文章提到

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

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

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

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

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

【问题讨论】:

  • 我很确定“本地时间”是指与 UTC 的时区偏移量。但是问题仍然很有趣:例如,getMonth() 是否可以返回大于 11 的值。我强烈怀疑答案是否定的,但我没有证据。
  • @Pointy,ECMA-262 规范确实说本地时间 == UTC + 时区调整 + 白天时间调整。然而,我们都知道规范所说的和浏览器所做的并不总是一回事。
  • 儒略日不是一个单独的日历系统——儒略日只是自公元前 4713 年 1 月 1 日中午以来的小数天数。有点像 UNIX 时间,除了几天,还有一个更久以前的时代。 en.wikipedia.org/wiki/Julian_day
  • @duskwuff 是的,但是计算机人永远喜欢(相信我,我已经很老了)一直在误用术语——“朱利安日期”通常意味着“一年中的一天”跨度>
  • 我编辑了这个问题。当我写它的时候,我确实把“儒略日”和“儒略历”混在了我的脑海里。我正在考虑使用希伯来语、波斯语等日历的人。

标签: javascript date calendar


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    朱利安日

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

    朱利安日期

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

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

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

    【讨论】:

      【解决方案3】:

      来自ECMAScript 规范(3rd edition5th edition 在这方面几乎相同,但我引用了第 5 个):

      15.9.1.9 当地时间

      从 UTC 到本地时间的转换由

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

      从本地时间到 UTC 的转换由

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

      请注意,UTC(LocalTime(t)) 不一定总是等于 t

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

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

      【讨论】:

        猜你喜欢
        • 2021-01-17
        • 1970-01-01
        • 2020-12-08
        • 2012-09-11
        • 2016-07-01
        • 1970-01-01
        • 2012-03-15
        • 2014-01-06
        • 2015-11-12
        相关资源
        最近更新 更多