我正在以两种不同的格式在数据库中插入日期。
这是作为日期时间插入
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(使用前将#替换为@)