使用 Luxon 格式化 ISO 时间
Formatting ISO time with Luxon
使用 Luxon JS,我一直在尝试格式化日期时间以某种格式输出,使用本机 toISO 函数:
这就是我得到的:
"2018-08-25T09:00:40.000-04:00"
这就是我想要的:
"2018-08-25T13:00:40.000Z"
我知道它们在 unix 时间方面是等价的,除了格式不同外,它们的含义相同,我只想能够输出第二个字符串而不是第一个字符串。我查看了 Luxon 文档,但找不到任何 arguments/options 可以满足我的需求。
正如其他评论中所述,您可以使用 2 种方法:
使用 toUTC
:
将 Luxon DateTime 转换为 UTC
"Set" the DateTime's zone to UTC. Returns a newly-constructed DateTime.
使用JS Date的toISOString()
方法
您可以使用 toJSDate()
从 luxon DateTime 获取 Date 对象:
Returns a JavaScript Date equivalent to this DateTime.
示例:
const DateTime = luxon.DateTime;
const dt = DateTime.now();
console.log(dt.toISO())
console.log(dt.toUTC().toISO())
console.log(dt.toJSDate().toISOString())
console.log(new Date().toISOString())
<script src="https://cdn.jsdelivr.net/npm/luxon@1.26.0/build/global/luxon.js"></script>
我从文档中看到,在 DateTime
的方法 .fromISO
中,您可以在 ISO 日期字符串后添加一个选项对象 ("2018-08-25T09:00:40.000-04: 00" 在你的例子中)。在这个对象中指定 zone: utc
这样的:
const DateTime = luxon.DateTime;
const stringDate = "2018-08-25T09:00:40.000-04:00";
const dt = DateTime.fromISO(stringDate, {zone: 'utc'});
console.log('This is your date format', dt.toISO())
<script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/1.26.0/luxon.min.js"></script>
使用 Luxon JS,我一直在尝试格式化日期时间以某种格式输出,使用本机 toISO 函数:
这就是我得到的:
"2018-08-25T09:00:40.000-04:00"
这就是我想要的:
"2018-08-25T13:00:40.000Z"
我知道它们在 unix 时间方面是等价的,除了格式不同外,它们的含义相同,我只想能够输出第二个字符串而不是第一个字符串。我查看了 Luxon 文档,但找不到任何 arguments/options 可以满足我的需求。
正如其他评论中所述,您可以使用 2 种方法:
使用
将 Luxon DateTime 转换为 UTCtoUTC
:"Set" the DateTime's zone to UTC. Returns a newly-constructed DateTime.
使用JS Date的
toISOString()
方法
您可以使用 toJSDate()
从 luxon DateTime 获取 Date 对象:
Returns a JavaScript Date equivalent to this DateTime.
示例:
const DateTime = luxon.DateTime;
const dt = DateTime.now();
console.log(dt.toISO())
console.log(dt.toUTC().toISO())
console.log(dt.toJSDate().toISOString())
console.log(new Date().toISOString())
<script src="https://cdn.jsdelivr.net/npm/luxon@1.26.0/build/global/luxon.js"></script>
我从文档中看到,在 DateTime
的方法 .fromISO
中,您可以在 ISO 日期字符串后添加一个选项对象 ("2018-08-25T09:00:40.000-04: 00" 在你的例子中)。在这个对象中指定 zone: utc
这样的:
const DateTime = luxon.DateTime;
const stringDate = "2018-08-25T09:00:40.000-04:00";
const dt = DateTime.fromISO(stringDate, {zone: 'utc'});
console.log('This is your date format', dt.toISO())
<script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/1.26.0/luxon.min.js"></script>