gpt4 book ai didi

Java 8 Date 等效于 Joda 的 DateTimeFormatterBuilder,具有多种解析器格式?

转载 作者:IT老高 更新时间:2023-10-28 20:45:13 24 4
gpt4 key购买 nike

我目前有一个 Joda 日期解析器,它使用 DateTimeFormatterBuilder 以及我可能收到的六种不同日期格式。

我正在迁移到 Java 8 的 Date 例程,但没有看到等效的例程。

如何使用 Java 8 Dates 做这样的事情?

DateTimeParser[] parsers = { 
DateTimeFormat.forPattern( "yyyy/MM/dd HH:mm:ss.SSSSSS" ).getParser() ,
DateTimeFormat.forPattern( "yyyy-MM-dd HH:mm:ss" ).getParser() ,
DateTimeFormat.forPattern( "ddMMMyyyy:HH:mm:ss.SSS Z" ).getParser() ,
DateTimeFormat.forPattern( "ddMMMyyyy:HH:mm:ss.SSS" ).getParser() ,
DateTimeFormat.forPattern( "ddMMMyyyy:HH:mm:ss.SSSSSS" ).getParser() ,
DateTimeFormat.forPattern( "yyyy-MM-dd HH:mm:ss.SSS" ).getParser()
};

DateTimeFormatter dateTimeFormatterInput = new DateTimeFormatterBuilder()
.append( null, parsers ).toFormatter();

最佳答案

没有直接的工具可以做到这一点,但您可以使用可选部分。可选部分括在方括号 [] 内。这允许要解析的字符串的整个部分丢失。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern(""
+ "[yyyy/MM/dd HH:mm:ss.SSSSSS]"
+ "[yyyy-MM-dd HH:mm:ss[.SSS]]"
+ "[ddMMMyyyy:HH:mm:ss.SSS[ Z]]"
);

此格式化程序为您拥有的三种主要模式定义了 3 个重要的可选部分。它们中的每一个都在其自己的可选部分中。

工作演示代码:

public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(""
+ "[yyyy/MM/dd HH:mm:ss.SSSSSS]"
+ "[yyyy-MM-dd HH:mm:ss[.SSS]]"
+ "[ddMMMyyyy:HH:mm:ss.SSS[ Z]]"
, Locale.ENGLISH);
System.out.println(LocalDateTime.parse("2016/03/23 22:00:00.256145", formatter));
System.out.println(LocalDateTime.parse("2016-03-23 22:00:00", formatter));
System.out.println(LocalDateTime.parse("2016-03-23 22:00:00.123", formatter));
System.out.println(LocalDateTime.parse("23Mar2016:22:00:00.123", formatter));
System.out.println(LocalDateTime.parse("23Mar2016:22:00:00.123 -0800", formatter));
}

关于Java 8 Date 等效于 Joda 的 DateTimeFormatterBuilder,具有多种解析器格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36188428/

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