【发布时间】:2018-01-20 02:13:35
【问题描述】:
我已经构建了一个应用程序,它使用纯 JavaScript 日期对象和 date-fns 来格式化和操作对象。
该应用程序在我开发它的 GMT 中完美运行,但是我现在在美国西海岸,我发现由于时区差异,我的许多日期对象都被丢弃了。
我正在从字符串创建日期对象,或者只是 YYYY-MM-DD 或 YYYY-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?
【问题讨论】:
标签: javascript date datetime