gpt4 book ai didi

Java DateTimeFormatter 无法转换

转载 作者:行者123 更新时间:2023-11-29 07:27:56 24 4
gpt4 key购买 nike

    String str = "Jan 15";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd");
LocalDate parsed = LocalDate.parse(str, formatter);

我一直收到这个异常:

Exception in thread "main" java.time.format.DateTimeParseException: Text 'Jan 15' could not be parsed at index 0 at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1947) at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1849) at java.time.LocalDate.parse(LocalDate.java:400) at com.mach5.T.main(T.java:17)

有人能帮帮我吗?

最佳答案

tl;dr

解析为 MonthDay 而不是 LocalDate

MonthDay.parse( 
"Jan 15" ,
DateTimeFormatter.ofPattern( "MMM dd" , Locale.US )
)

--01-15

月日

您的输入缺少年份,因此无法将其解析为 LocalDate。相反,解析为 MonthDay

如果要解析表示月-日的字符串,请使用表示月-日值的类。该类将是 MonthDay .

DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMM dd" , Locale.US ) ;
String input = "Jan 15" ;
MonthDay md = MonthDay.parse( input , f ) ;

md.toString(): --01-15

生成的输出字符串中的双连字符跟在 ISO 8601 之后标准,表示年份未知/省略。

本地日期

如果已知,您可以指定年份。

LocalDate ld = md.atYear( 2017 ) ;

ld.toString(): 2017-01-15

查看此 code run live at IdeOne.com .


关于java.time

java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧类 legacy日期时间类,例如 java.util.Date , Calendar , & SimpleDateFormat .

Joda-Time项目,现在在maintenance mode , 建议迁移到 java.time类。

要了解更多信息,请参阅 Oracle Tutorial .并在 Stack Overflow 中搜索许多示例和解释。规范为 JSR 310 .

从哪里获得 java.time 类?

ThreeTen-Extra项目用附加类扩展 java.time。该项目是 future 可能添加到 java.time 的试验场。您可能会在这里找到一些有用的类,例如 Interval , YearWeek , YearQuarter , 和 more .

关于Java DateTimeFormatter 无法转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47611900/

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