JavaScript Date时区日期1970年之前-1906-01-02在该日期之前不起作用

时间:2019-01-29 13:44:16

标签: javascript datetime

我正在使用odata wcf数据服务,它以/ Date(毫秒)格式返回日期

我尝试在时区进行转换,但是我遇到了旧日期问题​​

请检查附件的图片差异

new Date(new Date('1906-01-02').getTime()-19800000)

new Date(new Date('1906-01-01').getTime()-19800000)

Tue Jan 02 1906 00:00:00 GMT+0530 (India Standard Time) -- ok 

Sun Dec 31 1905 23:51:10 GMT+0521 (India Standard Time) --not good 

应该是

Tue Jan 01 1906 00:00:00 GMT+0530 (India Standard Time)

Image1 image2

1 个答案:

答案 0 :(得分:2)

您获得的值可能是正确的。在整个历史记录中,时区并不是一成不变的:

  

直到1905年,英属印度才采用标准化时区。通过阿拉哈巴德以东的子午线被选为印度的中央子午线。该协定于1906年1月1日生效,但加尔各答和孟买分别维持各自的时区,直到1948年和1955年。 https://www.mapsofindia.com/on-this-day/1st-september-1947-indian-standard-time-is-introduced

...所以您的数学越过了该特定区域更改定义的边界点。 (总的来说,这种事情不应该是意外的。日期和时间是一个看似困难的问题;人类日历是不规则的,不利于简单的数学运算。)