为什么转换new.date().doisostring()会改变时间



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

这是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

相关内容

  • 没有找到相关文章

最新更新