gpt4 book ai didi

javascript - 在本地时区从字符串 YYYY-MM-DD 创建 javascript Date 对象

转载 作者:行者123 更新时间:2023-11-30 20:49:24 26 4
gpt4 key购买 nike

我构建了一个使用纯 javascript 日期对象和 date-fns 的应用程序用于格式化和操作对象。

该应用程序在我开发它的 GMT 时运行完美,但我现在在美国西海岸,我发现由于时区差异,我的许多日期对象都被丢弃了。

我正在从字符串创建日期对象,可以是 YYYY-MM-DDYYYY-MM-DD HH:mm,例如 new Date( '2018-01-19')new Date('2018-01-19 08:00')

问题是,当我从 YYYY-MM-DD 格式的字符串创建日期时,它创建的对象会忽略本地时区。

const date1 = new Date('2018-01-19');
const date2 = new Date('2018-01-19 00:00');

const dateString1 = format(date1, 'YYYY-MM-DD'); // gives '2018-01-18'
const dateString2 = format(date2, 'YYYY-MM-DD'); // gives '2018-01-19'

根据您是否通过时间,行为并不一致。如果您传递时间,则日期对象固定为本地时区,但如果您不传递时间,则它固定为 UTC。我想要的是,如果我传递一个没有时间(只有年、月和日)的日期字符串,它也会创建一个日期对象,假设它是本地时区一天的开始。

这是为什么?每次创建 Date 对象时是否只需将时间设置为 00:00

最佳答案

“这是为什么?”

来自 the documentation :“对 ISO 8601 格式的支持不同之处在于仅日期字符串(例如“1970-01-01”)被视为 UTC,而不是本地。

不建议从字符串中解析日期;建议通过拆分字符串并使用各个组件作为参数来手动执行此操作。或者使用日期库。

关于javascript - 在本地时区从字符串 YYYY-MM-DD 创建 javascript Date 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48351987/

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