数据源具有一个没有偏移量的ISO-8601日期时间字段。
示例:2019-07-09T18:45
但是,我知道相关时间被理解为America/Chicago
时区。
如何使用获取与UTC相同时间的Luxon DateTime对象?
我可以做DateTime.fromISO('2019-07-09T18:45').plus({hours: 5})
...,但这仅在夏令时的半年内(如现在)有效。否则,偏移量将为.plus({hours: 6})
Luxon是否具有日期识别(因此也是DST识别)方法,用于从特定的分区本地时间转换为UTC?
答案 0 :(得分:1)
由于您知道输入日期的时区,因此可以在解析时使用zone
选项。正如fromISO
文档所述:
public static fromISO(text: string, 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>
答案 1 :(得分:0)
您可以参考以下luxon函数:
要检查当前时间是否基于夏令时!
https://moment.github.io/luxon/docs/class/src/datetime.js~DateTime.html#instance-method-toUTC