java - 是否可以同时使用 TextStyle.SHORT 和 TextStyle.FULL 解析当月的日期?

标签 java date parsing java-8 java-time

Java 8 DateTimeFormatter 从类似 d 的模式创建。 MMM u 只能解析以 TextStyle.SHORT(例如 13.Feb 2015)定义的样式书写的月份日期,这是一个从 d 创建的 DateTimeFormatter。 MMMM u 只能解析以 TextStyle.FULL 定义的样式书写的带有月份的日期(例如 13. February 2015)。

在“旧”的 SimpleDateFormat 中,“MMM”和“MMMM”之间的区别只对格式化很重要,对解析不重要,因此很容易创建一个解析器来理解月份的完整和简短形式名字。

是否可以创建一个也可以执行此操作的 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);

输出:

2015-01-04T00:00Z[UTC]
2015-01-04T00:00Z[UTC]

编辑

此格式化程序只能用于parse(),您必须为format() 使用不同的格式化程序。

关于java - 是否可以同时使用 TextStyle.SHORT 和 TextStyle.FULL 解析当月的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32540720/

相关文章:

java - jFugue:如何设置播放器要播放的下一个模式?

python - 如何在 Django 模型上定义任何一年的月份范围?

MySQL:STR_TO_DATE 与 YYWW

c - 如何从文件中读取文本到数组

c++ - 命令解析器的返回集

java - 在 Java 中解析 XML 文件中的文本值

java - 如何在java中打印对象数组

java - 使用 JAXB 的 XmlSerialize 3rd 方类

python - 使用 Pandas 每小时用特定列中的先前值填充每组缺失的日期

java - 追加到 JTextArea