首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合法javascript UTC日期

问合法javascript UTC日期
EN

Stack Overflow用户
提问于 2020-09-27 23:20:05
回答 1查看 34关注 0票数 0

我一直在寻找一种方法在我的JS应用程序中将我的约会对象保存在UTC中;然而,在任何情况下,Date的getTimezoneOffset()都不会返回一个0,我认为应该是这样的--在UTC和本地TZ之间的日期转换中,这似乎是很重要的。

看下面的例子,我已经尝试过,谢谢您的任何见解!

代码语言:javascript
复制
var TheDate = new Date( Date.UTC(2012, 10, 5) );
console.log(TheDate.getTimezoneOffset()) // => 300 (for me)
代码语言:javascript
复制
console.log(moment().utc().toDate().getTimezoneOffset()) // => 240 (for me)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-27 23:38:52

ECAMScript日期本质上是UTC,与ECMAScript时代(从1970-01-01T00:00:00Z之间的时间值以毫秒为单位)只是一个偏移,仅此而已。他们没有相关的时区。

使用主机时区偏移量:

  1. 在创建日期以确定等效的UTC时间和在使用本地日期和时间的各种方法中计算时间值
  2. 时,例如getHours (vs getUTCHours)

日期本身对时区一无所知。

getTimezoneOffset返回的值基于主机系统设置,它与调用日期的唯一关系是计算该日期的偏移量。该方法可能被称为getHostSystemTimezoneOffset,因为这就是它返回的内容。

在您的代码中:

代码语言:javascript
复制
new Date(Date.UTC(2012, 10, 5))

创建2012-11-05T00:00:00Z的日期。在该日期调用getTimezoneOffset返回等效本地日期和时间的主机系统偏移量,而不是创建日期时使用的偏移量。

如果不使用库(您编写的库或许多现有库中的一个),就无法将时区与日期关联起来。

在第二个例子中:

代码语言:javascript
复制
moment().utc()

只需设置一个标志,告诉moment.js方法对一切使用UTC。然后使用:

代码语言:javascript
复制
....toDate().getTimezoneOffset()

返回一个Date对象,然后获取该日期的主机系统时区偏移量,就好像您已经完成了:

代码语言:javascript
复制
new Date().getTimezoneOffset()

如果您只想使用UTC,那么对所有东西都使用UTC方法,完全忽略时区(我认为这就是您想要做的)。

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

https://stackoverflow.com/questions/64094183

复制
相关文章

相似问题

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