使用以下格式化程序,我可以解析"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();
但是,我无法指定同时解析两者的格式化程序。我应该附加什么模式?
Formatter还应该能够处理没有区域偏移的时间戳,例如"2017-03-28T23:40:06.000Z"
答案 0 :(得分:1)
由于DateTimeFormatterBuilder的行为类似于流畅的界面,因此最简单的方法是同时添加两种模式:
new DateTimeFormatterBuilder()
.append(ISO_LOCAL_DATE_TIME)
.appendPattern("X")
.appendPattern("XX")
.toFormatter();
答案 1 :(得分:1)
以下内容开始为我服务
new DateTimeFormatterBuilder()
.append(ISO_LOCAL_DATE_TIME)
.optionalStart()
.appendPattern("[XXX][X]")
.toFormatter();
答案 2 :(得分:0)
我曾经有一个任务,如果字符串代表一个有效的Date且事先不知道其格式,则将String解析为Date。基本上,我需要格式化任何可能格式的字符串。我想到了一个想法,您可以将希望支持的所有数据格式写入文件,然后逐一读取格式,并尝试解析该格式的字符串,直到成功或用尽格式为止。这里是文章的链接,其中更详细地描述了这个想法:Java 8 java.time package: parsing any string to date