首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >转换Javascript Date getTime()

转换Javascript Date getTime()
EN

Stack Overflow用户
提问于 2017-01-18 15:31:22
回答 1查看 303关注 0票数 0

我有一个问题,我无法找到解决方案。我有一个MVC项目,在那里我只在地区日期(保加利亚时间格林尼治标准时间+2 ).I传输我的日期以秒为单位,然后在我的javascript代码中我翻译它在seconds.Then中我想再次翻译它,但我得到的时间少了3个小时。

代码语言:javascript
运行
复制
var date = new Date(1970,0,1);  
date.setSeconds(1476086900); //    10.10.2016 8:20 a.m

然后,当我使用getTime(函数)将其传输并将其除以1000以再次获得秒时,我得到大约10k秒->上午5点。

代码语言:javascript
运行
复制
var apprSeconds =  date.getTime() / 1000 ;

apprSeconds为1476076100。

问题是我得到了不同的值:

1476086900 1476076100

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2017-01-19 06:54:29

代码并没有像你想的那样工作。当你这样做的时候:

代码语言:javascript
运行
复制
var date = new Date(1970,0,1);  
date.setSeconds(1476086900);

将在主机系统的本地时区UTC+02:00中为1970年1月1日创建日期。添加将设置本地秒数,因此您仍然是UTC+02:00。

但是,内部时间值为UTC,因此当您执行以下操作时:

代码语言:javascript
运行
复制
date.getTime() / 1000

你得到了UTC秒。由于您将初始值视为本地,因此需要考虑时区偏移量:

代码语言:javascript
运行
复制
date.getTime() / 1000 - date.getTimezoneOffset() * 60;

这应该会给出以秒为单位的原始值。请注意,时区偏移量以分钟表示,对于格林威治以东的时区为-ve,对于时区以西为+ve (即与典型意义相反)。

代码语言:javascript
运行
复制
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

这里的术语“本地”是指基于主机时区设置,该设置可以基于区域设置(即地理位置)或一些其他策略(例如用户或管理员将其设置为任何值)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41713636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档