在编写 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 许可协议
以这种方式构造的日期使用本地时区,从而使构造的日期不正确。设置某个日期对象的时区是从包含时区的日期字符串构造它。 (我无法在较旧的 Android 浏览器中使用它。)
请注意
getTime()
返回毫秒,而不是普通秒。对于 UTC/Unix 时间戳,以下内容就足够了:
它将当前时区偏移量计入结果中。对于字符串表示, 大卫埃利斯的 回答有效。
澄清:
该输入被视为 _本地时间_。如果传入 _UTC 时间_,结果会有所不同。观察(我现在在 GMT +02:00,现在是 07:50):
另请注意,
getUTCDate()
不能替代getUTCDay()
。这是因为getUTCDate()
返回 月份中的日期;而getUTCDay()
返回 星期几。