如何在 JavaScript 中获取 UTC 时间戳?

新手上路,请多包涵

在编写 Web 应用程序时,将数据库中的 所有 日期时间(服务器端)存储为 UTC 时间戳是有意义的。

当我注意到在 JavaScript 中的时区操作方面,您本身无法做很多事情时,我感到很惊讶。

我稍微扩展了 Date 对象。这个功能有意义吗?基本上,每次我向服务器发送任何东西时,它都会是一个用这个函数格式化的时间戳……

你能看出这里有什么大问题吗?或者也许是从不同角度的解决方案?

Date.prototype.getUTCTime = function(){
  return new Date(
    this.getUTCFullYear(),
    this.getUTCMonth(),
    this.getUTCDate(),
    this.getUTCHours(),
    this.getUTCMinutes(),
    this.getUTCSeconds()
  ).getTime();
}

这对我来说似乎有点令人费解。而且我对性能也不太确定。

原文由 Merc 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.7k
2 个回答
  1. 以这种方式构造的日期使用本地时区,从而使构造的日期不正确。设置某个日期对象的时区是从包含时区的日期字符串构造它。 (我无法在较旧的 Android 浏览器中使用它。)

  2. 请注意 getTime() 返回毫秒,而不是普通秒。

对于 UTC/Unix 时间戳,以下内容就足够了:

 Math.floor((new Date()).getTime() / 1000)

它将当前时区偏移量计入结果中。对于字符串表示, 大卫埃利斯的 回答有效。

澄清:

 new Date(Y, M, D, h, m, s)

该输入被视为 _本地时间_。如果传入 _UTC 时间_,结果会有所不同。观察(我现在在 GMT +02:00,现在是 07:50):

 > var d1 = new Date();
 > d1.toUTCString();
 "Sun, 18 Mar 2012 05:50:34 GMT" // two hours less than my local time
 > Math.floor(d1.getTime()/ 1000)
 1332049834

 > var d2 = new Date( d1.getUTCFullYear(), d1.getUTCMonth(), d1.getUTCDate(), d1.getUTCHours(), d1.getUTCMinutes(), d1.getUTCSeconds() );
 > d2.toUTCString();
 "Sun, 18 Mar 2012 03:50:34 GMT" // four hours less than my local time, and two hours less than the original time - because my GMT+2 input was interpreted as GMT+0!
 > Math.floor(d2.getTime()/ 1000)
 1332042634

另请注意, getUTCDate() 不能替代 getUTCDay() 。这是因为 getUTCDate() 返回 月份中的日期;而 getUTCDay() 返回 星期几

原文由 DCoder 发布,翻译遵循 CC BY-SA 3.0 许可协议

以常规格式获取 UTC 时间的最简单方法如下:

 > new Date().toISOString()
"2016-06-03T23:15:33.008Z"

如果您需要 EPOC 时间戳,请将您的日期传递给 Date.parse 方法

> Date.parse(new Date)
1641241000000
> Date.parse('2022-01-03T20:18:05.833Z')
1641241085833

或者您可以使用 + 进行从 Date 到 Int 的类型转换

> +new Date
1641921156671

以秒为单位的 EPOC 时间戳。

 > parseInt(Date.parse('2022-01-03T20:18:05.833Z') / 1000)
1641241085
> parseInt(new Date / 1000)
1643302523

原文由 Tahsin Turkoz 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题