Javascript中的Date
对象是否曾使用过非公历?
MDN和MSDN文档概述了Date
对象和参考UTC和IETF-compliant RFC 2822 timestamps上的方法。
维基百科文章提及
通常使用公历来识别天数,但也可以使用朱利安天数。
MDN和MSDN文档只是说非UTC方法引用“本地时间”,但没有定义“本地时间”是什么。
我正在努力与网络服务接口,该网络服务向我提供一些包含一年的字段的数据,我需要将其与当前的日期进行比较。我很清楚依赖用户机器准确时间的缺陷,并且可以解决因时区错误和伪造日期设置导致的任何问题。
我担心,不使用公历的语言环境中的用户,以及如果我使用.getDate()
,.getMonth()
和{{1},他们的浏览器会回馈什么计算日期的方法。
因此,在实践中,Javascript中的“本地时间”是否指的是非公历系统,例如希伯来语或波斯语日历?
答案 0 :(得分:2)
我刚刚通过将我的计算机(Mac OS X 10.7.4)设置为使用希伯来日历进行测试,并且在Safari,Firefox或Chrome中不会影响Date对象的行为。看起来它总是使用格里高利历。
答案 1 :(得分:2)
Re:Javascript中的Date对象是否曾使用过非公历?
没有。我没有看到任何声明Javascript Date对象可以使用Julian Calendar系统的备份。
但是,您可以将Javascript日期对象(格里高利日期)转换为Julian Day或Julian Date。
朱利安日
朱利安日用于时间测量的朱利安日期(JD)系统,供天文学界科学使用,显示自公元前4713年1月1日格林威治中午以来的天数和一天中的一小部分时间间隔。建议朱利安日期用于国际天文学联合会的天文用途。
朱利安日期
术语Julian日期被广泛用于指日期(序数日期),尽管这种用法并不严格符合某些国际组织制定的标准。
*以上引用的来源是维基百科文章Julian_day
请注意,这两种格式都不涉及数月,因为“Julian date”和“Julian day”是格里高利历中某一天的特定表示的术语。你可以通过朱利安日定义使用格里高利日期来说明这一事实:“公元前4713年格林威治中午”
答案 2 :(得分:0)
来自ECMAScript规范(3rd edition和5th 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
是夏令时调整。
在用户的计算机上启用了非公历日历时,我没有发现任何浏览器(当前或历史)做任何不同的证据。