我有一个问题,我无法找到解决方案。我有一个MVC项目,在那里我只在地区日期(保加利亚时间格林尼治标准时间+2 ).I传输我的日期以秒为单位,然后在我的javascript代码中我翻译它在seconds.Then中我想再次翻译它,但我得到的时间少了3个小时。
var date = new Date(1970,0,1);
date.setSeconds(1476086900); // 10.10.2016 8:20 a.m
然后,当我使用getTime(函数)将其传输并将其除以1000以再次获得秒时,我得到大约10k秒->上午5点。
var apprSeconds = date.getTime() / 1000 ;
apprSeconds为1476076100。
问题是我得到了不同的值:
1476086900 1476076100
谢谢你的帮助。
发布于 2017-01-19 06:54:29
代码并没有像你想的那样工作。当你这样做的时候:
var date = new Date(1970,0,1);
date.setSeconds(1476086900);
将在主机系统的本地时区UTC+02:00中为1970年1月1日创建日期。添加将设置本地秒数,因此您仍然是UTC+02:00。
但是,内部时间值为UTC,因此当您执行以下操作时:
date.getTime() / 1000
你得到了UTC秒。由于您将初始值视为本地,因此需要考虑时区偏移量:
date.getTime() / 1000 - date.getTimezoneOffset() * 60;
这应该会给出以秒为单位的原始值。请注意,时区偏移量以分钟表示,对于格林威治以东的时区为-ve,对于时区以西为+ve (即与典型意义相反)。
var seconds = 1476086900;
var date = new Date(1970,0,1);
date.setSeconds(seconds);
// Date in host timezone
console.log('date: ' + date.toString());
// Date UTC time value
console.log('UTC time value in seconds: ' + date/1000)
// returns original seconds value
console.log('Time value in seconds adjusted for host timezone: ' +
(date / 1000 - date.getTimezoneOffset() * 60));
这表明两个时间值之间的差值是时区偏移。
PS
这里的术语“本地”是指基于主机时区设置,该设置可以基于区域设置(即地理位置)或一些其他策略(例如用户或管理员将其设置为任何值)。
https://stackoverflow.com/questions/41713636
复制相似问题