Date对象是否使用非公历?

时间:2012-05-23 15:54:13

标签: javascript date calendar

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

MDNMSDN文档概述了Date对象和参考UTCIETF-compliant RFC 2822 timestamps上的方法。

维基百科文章提及

  

通常使用公历来识别天数,但也可以使用朱利安天数。

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

我正在努力与网络服务接口,该网络服务向我提供一些包含一年的字段的数据,我需要将其与当前的日期进行比较。我很清楚依赖用户机器准确时间的缺陷,并且可以解决因时区错误和伪造日期设置导致的任何问题。

我担心,不使用公历的语言环境中的用户,以及如果我使用.getDate().getMonth()和{{1},他们的浏览器会回馈什么计算日期的方法。

因此,在实践中,Javascript中的“本地时间”是否指的是非公历系统,例如希伯来语或波斯语日历?

3 个答案:

答案 0 :(得分:2)

我刚刚通过将我的计算机(Mac OS X 10.7.4)设置为使用希伯来日历进行测试,并且在Safari,Firefox或Chrome中不会影响Date对象的行为。看起来它总是使用格里高利历。

答案 1 :(得分:2)

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

没有。我没有看到任何声明Javascript Date对象可以使用Julian Calendar系统的备份。

但是,您可以将Javascript日期对象(格里高利日期)转换为Julian DayJulian Date

朱利安日

  
    

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

  

朱利安日期

  
    

术语Julian日期被广泛用于指日期(序数日期),尽管这种用法并不严格符合某些国际组织制定的标准。

  

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

请注意,这两种格式都不涉及数月,因为“Julian date”和“Julian day”是格里高利历中某一天的特定表示的术语。你可以通过朱利安日定义使用格里高利日期来说明这一事实:“公元前4713年格林威治中午”

答案 2 :(得分:0)

来自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是夏令时调整。

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