我有
格式: dd-MM-yyyy'T'HH:mm:sszzz
区域设置:en_US
日期: 01-02-2016T10:00:00+01:00
区域 ID: Europe/Warsaw
我打电话:
new SimpleDateFormat(format, locale).parse(date).toInstant().atZone(zoneId)
我得到Unparseable date: "01-02-2016T10:00:00+01:00"
是否有任何选项可以使用简单日期格式,或者我需要将其更改为其他格式?
为了匹配"01-02-2016T10:00:00+01:00"
,你的格式字符串应该是"dd-MM-yyyy'T'HH:mm:ssXXX"
。 你有zzz
你应该XXX
的地方. 请参阅javadoc。
此外,这是一种非常奇怪的格式。 通常,当人们看到日期和时间部分之间的T
分隔符时,它指示ISO8601格式(或基于ISO8601的格式,例如RFC3339(。 但是,在这种格式中,日期按年-月-日顺序排列。 您有日-月-年顺序。 这种矛盾肯定会在某个时候引起混乱。 我强烈建议更改此数据源以使用正确的排序,或者将T
替换为空格,并在 tz 偏移量之前放置一个空格。
换句话说,您的数据应如下所示:
"01-02-2016 10:00:00 +01:00" // Human-readable, but locale-specfic
或
"2016-02-01T10:00:00+01:00" // ISO8601 / RFC3339 compliant
不
"01-02-2016T10:00:00+01:00" // Nonsense