如何使用luxon保持utc日期的时区偏移?

问题描述

我正在尝试打印多个以其自己的时区偏移量存储的日期。

使用momentjs,我曾经做过以下事情

const date1 = "2013-01-01T00:00:00-05:00";
const date2 = "2013-01-01T00:00:00-13:00";

console.log(moment.parseZone(date1).format());
console.log(moment.parseZone(date2).format());

// 2013-01-01T00:00:00-05:00
// 2013-01-01T00:00:00-13:00

会同时打印两个日期及其偏移量(-05:00-13:00)。

我想对luxon js做同样的事情

const date1 = "2013-01-01T00:00:00-05:00";
const date2 = "2013-01-01T00:00:00-13:00";

console.log(luxon.DateTime.fromISO(date1).toISO());
console.log(luxon.DateTime.fromISO(date2).toISO());

// 2013-01-01T02:00:00.000-03:00
// 2013-01-01T10:00:00.000-03:00

但是似乎没有保持偏移量,而是将它们转换为-03:00。 如何保持相同的抵销额?

解决方法

找到答案了。我需要激活setZone选项。 因此,解决方案如下:

const date1 = "2013-01-01T00:00:00-05:00";
const date2 = "2013-01-01T00:00:00-13:00";

console.log(luxon.DateTime.fromISO(date1,{ setZone: true }).toISO());
console.log(luxon.DateTime.fromISO(date2,{ setZone: true }).toISO());

// 2013-01-01T00:00:00.000-05:00
// 2013-01-01T00:00:00.000-13:00

检查文档here