我有一个字符串时间值,它代表中央时区值(芝加哥时间):
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库进一步处理数据?
我尝试了几种不同的方法,但似乎无法使其正常工作,虽然价格不高,但如果可能的话,会很不错。
答案 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%回答最初的问题,但是确实给了我一直想要的行为。