我以两种不同格式在数据库中插入一个日期。
这是DateTime
插入的 var mydate;
mydate = new Date();
document.getElementById('clockinhour').value = mydate.toISOString().slice(0, 19).replace('T', ' ');
输出
2017-06-21 20:14:31
这是作为Varchar插入的:
document.getElementById('clocked_in_time').value = Date();
输出b
Wed Jun 21 2017 16:14:31 GMT-0400 (Eastern Standard Time)
输出B是正确的时间,但我需要显示输出A。什么导致转换ToisString时改变时间?我该如何解决?
在您的中,它正在插入DateTime 阻止您的slice
剥离时区部件(toISOString
输出末尾的Z
(:
document.getElementById('clockinhour').value = mydate.toISOString().slice(0, 19).replace('T', ' ');
正如@ROBG在评论部分中指出的那样,toISOString
应始终返回UTC中的日期(Z
或+00:00
(。
rtfm: " 时区[偏移]始终是UTC,用后缀z 表示",
时间"更改",因为它在调用toISOString
时会转换为UTC。
如果您想在时区中获得ISO日期,则应该在这两个问题中查看:如何使用JavaScript中的时区偏移量的ISO 8601格式化?以及如何格式化JavaScript日期
ISO时间是无时区域的。您会注意到B时您有时区GMT-04:00如果将这四个小时添加到日期的16个小时,则获得20