为什么转换 new.Date() .toISOString() 会改变时间?

2024-05-22

我正在以两种不同的格式在数据库中插入日期。

这是作为日期时间插入

    var mydate;
    mydate = new Date();
    document.getElementById('clockinhour').value = mydate.toISOString().slice(0, 19).replace('T', ' ');

Output A

2017-06-21 20:14:31 

这是作为 varchar 插入:

document.getElementById('clocked_in_time').value = Date();

Output B

Wed Jun 21 2017 16:14:31 GMT-0400 (Eastern Standard Time)

输出 B 是正确的时间,但我需要显示输出 A。转换为 ISOString 时,是什么导致时间发生变化?我怎样才能解决这个问题?


In your 这是作为日期时间插入阻止你的slice正在剥离时区部分(Z在......的最后toISOString输出):

document.getElementById('clockinhour').value = mydate.toISOString().slice(0, 19).replace('T', ' ');

正如@RobG 在评论部分指出的那样,toISOString应始终返回 UTC 格式的日期(Z or +00:00).

RTFM http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.toisostring: "时区 [offset] 始终为 UTC,由后缀 Z 表示",

时间“改变”,因为当您拨打电话时它会转换为 UTCtoISOString.

如果您想获取您所在时区的 ISO 日期,您应该查看以下两个问题:如何在 JavaScript 中使用 ISO 8601 格式化带有时区偏移的日期? https://stackoverflow.com/q/17415579/3136474 and 如何格式化 JavaScript 日期 https://stackoverflow.com/q/3552461/3136474

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么转换 new.Date() .toISOString() 会改变时间? 的相关文章

随机推荐