从像d. MMM u这样的模式创建的Java8d. MMM u只能解析用TextStyle.SHORT (例如13. Feb 2015)定义的样式编写的月份的日期,从d. MMMM u创建的DateTimeFormatter只能解析用TextStyle.FULL定义的月份(例如13. February 2015)编写的月份。
在“旧”SimpleDateFormat中,"MMM“和"MMMM”之间的区别只在格式化方面很重要,而不是对解析很重要,因此很容易创建一个解析器,它可以同时理解完整的和简短的月份名称。
是否有可能创建一个同样可以这样做的Java8 DateTimeFormatter?还是我总是要创建两个解析器,一个是完整的,另一个是短模式的?
发布于 2015-09-12 16:23:51
您可以选择不同的月份模式:
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);输出:
2015-01-04T00:00Z[UTC]
2015-01-04T00:00Z[UTC]编辑
此格式化程序只能用于parse(),您必须为format()使用不同的格式化程序。
https://stackoverflow.com/questions/32540720
复制相似问题