DateTimeFormatter用于解析区域偏移的所有ISO有效样式[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DateTimeFormatter用于解析区域偏移的所有ISO有效样式[重复]相关的知识,希望对你有一定的参考价值。

使用以下格式化程序,我能够解析"2017-03-28T23:40:06.000+0100"

new DateTimeFormatterBuilder()
            .append(ISO_LOCAL_DATE_TIME)
            .appendPattern("X")
            .toFormatter();

另一个解析"2017-03-28T23:40:06.000+01:00"

new DateTimeFormatterBuilder()
            .append(ISO_LOCAL_DATE_TIME)
            .appendPattern("XX")
            .toFormatter();

但是,我无法指定解析它们的格式化程序。我应该添加什么模式?

格式化程序还应该能够处理没有区域偏移的时间戳,例如"2017-03-28T23:40:06.000Z"

答案

由于DateTimeFormatterBuilder表现得像一个流畅的界面,最简单的方法是附加两个模式:

new DateTimeFormatterBuilder()
        .append(ISO_LOCAL_DATE_TIME)
        .appendPattern("X")
        .appendPattern("XX")
        .toFormatter();
另一答案

以下开始为我工作

new DateTimeFormatterBuilder()
            .append(ISO_LOCAL_DATE_TIME)
            .optionalStart()
            .appendPattern("[XXX][X]")
            .toFormatter();
另一答案

我曾经有一个任务要解析任何String to Date,如果String表示事先知道格式的有效日期。基本上我需要格式化任何可能格式的字符串。我想出了一个想法,你在其中写入你希望支持的所有数据格式的文件,然后逐个读取格式并尝试按照这种格式解析字符串,直到你成功或用完格式。以下是更详细描述该想法的文章的链接:Java 8 java.time package: parsing any string to date

以上是关于DateTimeFormatter用于解析区域偏移的所有ISO有效样式[重复]的主要内容,如果未能解决你的问题,请参考以下文章

DateTimeFormatter parseBest() 给出“无法在索引 8 处解析”异常

最全的时间类解析。 SimpleDateFormat + Date() 和 DateTimeFormatter + LocalDate()的区别与使用场景

最全的时间类解析。 SimpleDateFormat + Date() 和 DateTimeFormatter + LocalDate()的区别与使用场景

Java日期时间API系列10-----Jdk8中java.time包中的新的日期时间API类的DateTimeFormatter

java_DateTimeFormatter

Java8- ZonedDateTime 与 DateTimeFormatter 无法识别格式