gpt4 book ai didi

java - 如何使用DateTimeFormatter统一日期格式

转载 作者:行者123 更新时间:2023-12-02 04:13:46 25 4
gpt4 key购买 nike

我需要将不同的时间格式解析为BASIC_ISO_DATE。目前,有 4 种日期格式:

  • 2016-10-01 (ISO_LOCAL_DATE)
  • 2016T
  • 201610T
  • 2016-02-07T22:03:39.937Z(ISO 8601)

需要解析为20161001并打印出来,默认日期为01,默认月份Jan。示例:

  • 2016T -> 20160101
  • 201610T -> 20161001

如何使用 DateTimeFormatter 来实现此目的?

最佳答案

只是为了补充@Flown's answer (顺便说一句,效果很好),您还可以使用可选模式(由 [] 分隔):

DateTimeFormatter parser = new DateTimeFormatterBuilder()
// optional ISO8601 date/time and offset
.appendOptional(DateTimeFormatter.ISO_OFFSET_DATE_TIME)
// optional yyyy-MM-dd or yyyyT or yyyyMMT
.appendPattern("[yyyy-MM-dd][yyyy'T'][yyyyMM'T']")
// default day is 1
.parseDefaulting(ChronoField.DAY_OF_MONTH, 1L)
// default month is January
.parseDefaulting(ChronoField.MONTH_OF_YEAR, 1L)
// create formatter
.toFormatter();

这的工作方式完全相同。您可以选择哪一个更清晰或更容易维护。如果有很多不同的模式,使用[]最终可能会更加困惑,IMO。

请注意,我使用了 ISO_OFFSET_DATE_TIME 而不是 ISO_ZONED_DATE_TIME。唯一的区别是 ISO_ZONED_DATE_TIME 最后还接受时区名称(如 [Europe/London]),而 ISO_OFFSET_DATE_TIME 则不接受。 Check the javadoc了解更多信息。

关于java - 如何使用DateTimeFormatter统一日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45748065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com