将 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