gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:41:48 28 4
gpt4 key购买 nike

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

这是作为日期时间插入

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

输出A

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。转换为 ISOString 时,是什么导致时间发生变化?我该如何解决这个问题?

最佳答案

在您的这是作为日期时间插入 block 中,您的切片 正在剥离时区部分( 末尾的Z toISOString 输出):

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

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

RTFM: "The time zone [offset] is always UTC, denoted by the suffix Z",

时间“改变”是因为当您调用 toISOString 时它被转换为 UTC。

如果你想获得你所在时区的 ISO 日期,你应该看看这两个问题:How to ISO 8601 format a Date with Timezone Offset in JavaScript?How to format a JavaScript date

关于javascript - 为什么转换 new.Date() .toISOString() 会改变时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44689770/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com