我有一些返回JSON的C#Web服务..NET JavaScriptSerializer以大纪元时间(自1970年以来的毫秒)返回日期.在任何Windows计算机上,基于Web的应用程序将毫秒数处理回正确的日期而不会出现问题.
在我的Mac上,日期有时会偏离1小时.不是每一次.只是有时.现在正在我正在构建的iPhone前端上发生这种情况.
我一开始认为,在将毫秒除以1000时,我已经失去了一些精度,以创建一个有效的Objective-C NSDate对象.然后我在Mac Firefox上使用相同的时间戳在javascript中测试日期创建,并获得相同的1小时偏移量.
有任何想法吗?谢谢...
编辑:我还注意到在XCode的控制台中,创建的日期旁边有一个-4或-5.我假设这是GMT偏移量.这些似乎随着日期是否偏移1小时而变化.因此,一些-4个日期和一些-5个日期是正确的,其中一个是偏移的.
编辑:使用示例:
console.log(new Date(-1173643200000));
返回Sun Oct 23 1932 00:00:00 GMT-0400(EST)
console.log(new Date(-1031515200000));
返回Sat Apr 24 1937 23:00:00 GMT-0500(EST)
NSDate* date = [NSDate dateWithTimeIntervalSince1970:ticks / 1000]; -589320000000 = 1951-04-30 00:00:00 -0400 -1173643200000 = 1932-10-22 23:00:00 -0500
(这个在Firebug控制台中返回正确,在XCode控制台中错误)
-1303416000000 = 1928-09-12 00:00:00 -0400 -1492545600000 = 1922-09-15 00:00:00 -0400 -1263668400000 = 1929-12-16 00:00:00 -0500 -1252094400000 = 1930-04-29 00:00:00 -0400 -1046458800000 = 1936-11-03 00:00:00 -0500 -1298746800000 = 1928-11-05 00:00:00 -0500 -1031515200000 = 1937-04-24 23:00:00 -0500
(在Firebug控制台和XCode控制台中返回错误)
-910465200000 = 1941-02-24 00:00:00 -0500 -1152648000000 = 1933-06-23 00:00:00 -0400 -1109793600000 = 1934-10-31 23:00:00 -0500
微软/ Mozilla/Apple是否有可能在夏令时开始时制定相互矛盾的规则?
编辑: Mac Firefox和Windows Firefox获得-1031515200000的不同结果.两台机器都设置为相同的时区.