2

我有一个代表中央时区值(芝加哥时间)的字符串时间值:

const rawTime = "11:22 AM";

使用 date-fns v2.3.0 我正在解析一个新的 Date 对象:

const time = parse(rawTime, "hh:mm aa", new Date(2019, 8, 23));

当我在中央时间运行它时,我有一个通过的测试:

expect(time).toStrictEqual(new Date("2019-09-23 11:22:00-05:00"));

当我在 UTC 时区运行测试时,它会失败,因为它假定它是 UTC 时间——我明白为什么。

我想知道是否有一种方法可以指定“backupDate”值( new Date(2019, 8, 23)解析的一部分),该值将自动解析具有中央时区时区偏移量的时间值..?还是我需要解析时间,然后使用 date-fns-tz 库进一步处理数据?

我尝试了一些不同的事情,但似乎无法让它发挥作用,这不是什么大不了的事,但如果可能的话会很好。

此处的相关文档 - https://date-fns.org/v2.3.0/docs/parse#syntax

4

1 回答 1

0

我发现处理这个问题的一种方法 - 因为我知道传入时间的时区是中央时间,所以我将时区信息附加到原始时间的末尾,然后parse将时区中的新字符串添加到formatString.

const rawTime = "11:22 AM";
const rawTimeWithTz = rawTime + " -05:00"; // specify central timezone on the raw time
const time = parse(rawTimeWithTz, "hh:mm aa xxxxx", new Date(2019, 8, 23));

expect(time).toStrictEqual(new Date("2019-09-23 11:22:00-05:00"));

这并不能 100% 回答原始问题,但它确实给了我我一直在寻找的相同行为。

于 2019-09-26T15:16:52.643 回答