date-fns v2使用默认时区解析时间

时间:2019-09-26 14:32:10

标签: date-fns

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

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

1 个答案:

答案 0 :(得分: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%回答最初的问题,但是确实给了我一直想要的行为。