无法使用简单日期格式分析包含区域信息的日期



我有

格式: 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

相关内容

  • 没有找到相关文章

最新更新