gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 13:20:06 27 4
gpt4 key购买 nike

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

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

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

你能看出这里有什么大问题吗?还是换个 Angular 解决方案?

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

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

最佳答案

  1. 以这种方式构造的日期使用本地时区,导致构造的日期不正确。设置某个日期对象的时区是从包含时区的日期字符串构造它。 (我无法让它在旧版 Android 浏览器中运行。)

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

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

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

它会将当前时区偏移量计入结果中。对于字符串表示,David Ellis'答案有效。

澄清一下:

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() 返回 the day of the month ;而 getUTCDay() 返回 the day of the week .

关于javascript - 如何在 JavaScript 中获取 UTC 时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9756120/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com