将 Luxon 日期格式化为 ISO8601 基本格式

Posted

技术标签:

【中文标题】将 Luxon 日期格式化为 ISO8601 基本格式【英文标题】:Format Luxon date to ISO8601 basic format 【发布时间】:2021-08-13 17:12:43 【问题描述】:

我正在使用 Luxon 来格式化 DateTime,我需要它是以下格式,包括 'T' 和 'Z' 字符:

20150830T123600Z

我尝试使用以下方法格式化 DateTime:

let dateTimeNow = DateTime.now();
let formattedDateTime = dateTimeNow.toFormat('yyyyMMddTHHmmssZ');

但我得到了格式:

2021-05-25T12:43:37.043Z 

如何删除“-”、“:”和“.”符号?

【问题讨论】:

related? - 那里的 OP 要求使用不同的格式,但您应该能够根据需要调整解决方案。 @MrFuppes 不是我想要的,但可以工作。不过这有点hacky。 没有 Luxon:new Date().toISOString().replace(/(\.\d3)|\W/g,''). 【参考方案1】:

您可以使用单引号转义字符串(文档:Escaping),因此您可以使用toFormat("yyyyMMdd'T'HHmmss'Z'")

请注意,末尾的Z 代表UTC+0 偏移量,因此我建议不要用它来表示具有不同偏移量的当地时间。

例子:

const DateTime = luxon.DateTime;
let dateTimeNow = DateTime.utc();
let formattedDateTime = dateTimeNow.toFormat("yyyyMMdd'T'HHmmss'Z'");
console.log(formattedDateTime)
<script src="https://cdn.jsdelivr.net/npm/luxon@1.26.0/build/global/luxon.js"></script>

【讨论】:

【参考方案2】:

您也可以使用基本的 ISO 格式,而不是编写格式:

const DateTime = luxon.DateTime;
let dateTimeNow = DateTime.now().toUTC().startOf('second');
console.log(dateTimeNow.toISO( format: 'basic', suppressMilliseconds: true ))
<script src="https://cdn.jsdelivr.net/npm/luxon@2.2.0/build/global/luxon.js"></script>

【讨论】:

以上是关于将 Luxon 日期格式化为 ISO8601 基本格式的主要内容,如果未能解决你的问题,请参考以下文章

Jackson 将 ISO8601 格式的日期时间反序列化为 Java8 Instant

如何使用 T 和 Z 将 LocalDate 格式化为 ISO 8601?

在春季使用 JSR310 java.time 时将日期、即时序列化为 ISO 8601

如何使用 ISO 8601 格式的 DateTime 字段将 JSON 文本反序列化为 BsonDocument?

如何将 Excel 中的日期转换为 ISO 8601 格式

将时区偏移量(ISO 8601 格式)添加到原始日期时间