数据源具有不带偏移量的ISO-8601日期时间字段。
示例:2019-07-09T18:45
但是,我知道有问题的时间应该是在America/Chicago时区。
我怎样才能在UTC中获得这个时间等价的DateTime对象呢?
我可以做DateTime.fromISO('2019-07-09T18:45').plus({hours: 5})。但这只在一年中的半年(比如现在)才有效,因为现在是夏令时。否则偏移量将为.plus({hours: 6})
Luxon是否有一个日期感知(因此DST感知)的方法来将特定区域的本地时间转换为UTC?
发布于 2019-07-08 14:44:46
因为您知道输入日期的时区,所以在解析它时可以使用zone选项。正如fromISO文档所述:
文本公共静态对象(
:fromISO,opts: Object):DateTime
opts.zone:如果输入字符串本身没有指定偏移量,则使用此区域。
然后,您可以使用toUTC将您的DateTime转换为UTC:
将DateTime的区域“设置”为UTC。返回新构造的DateTime。
等效于setZone('utc')
下面是一个实时示例:
const DateTime = luxon.DateTime;
const d = DateTime.fromISO('2019-07-09T18:45', {zone: 'America/Chicago'});
console.log(d.toISO());
console.log(d.toUTC().toISO());<script src="https://cdn.jsdelivr.net/npm/luxon@1.16.0/build/global/luxon.js"></script>
发布于 2019-07-08 13:34:25
您可以引用以下luxon函数:
https://moment.github.io/luxon/docs/class/src/datetime.js~DateTime.html#instance-get-isInDST的
检查当前时间是否基于DST!
的函数
https://moment.github.io/luxon/docs/class/src/datetime.js~DateTime.html#instance-method-toUTC
https://stackoverflow.com/questions/56927110
复制相似问题