Dav*_*vid 9 java parsing date java-8 java-time
DateTimeFormatter从类似模式创建的Java 8 d. MMM u只能用TextStyle.SHORT定义的样式解析日期(例如13. Feb 2015),从中创建的DateTimeFormatter d. MMMM u只能用TextStyle.FULL定义的样式解析日期(例如13. February 2015).
在"旧的"SimpleDateFormat中,"MMM"和"MMMM"之间的区别仅对格式化很重要,而不是解析,因此很容易创建一个理解月份名称的FULL和SHORT形式的解析器.
是否可以创建一个也可以执行此操作的Java 8 DateTimeFormatter?或者我是否总是要创建两个解析器,一个使用FULL,另一个使用SHORT模式?
您可以将不同的月份模式设为可选:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d. [MMMM][MMM] u HH:mm:ss z", Locale.US);
ZonedDateTime zdt1 = ZonedDateTime.parse("4. Jan 2015 00:00:00 UTC", formatter);
ZonedDateTime zdt2 = ZonedDateTime.parse("4. January 2015 00:00:00 UTC", formatter);
System.out.println(zdt1);
System.out.println(zdt2);
Run Code Online (Sandbox Code Playgroud)
输出:
2015-01-04T00:00Z[UTC]
2015-01-04T00:00Z[UTC]
Run Code Online (Sandbox Code Playgroud)
编辑
此格式化程序只能用于parse(),您必须使用不同的格式化程序format().