一尘不染

Java vSimpleDateFormat解析日期为'Z'文字的日期

java

我正在尝试解析一个看起来像这样的日期:

2010-04-05T17:16:00Z

这是每个http://www.ietf.org/rfc/rfc3339.txt的有效日期。“ Z”文字(引号)“ 表示UTC是指定时间的首选参考点。 ”

如果我尝试使用SimpleDateFormat和以下模式对其进行解析:

yyyy-MM-dd'T'HH:mm:ss

它将被解析为2010年美国东部时间星期一4月5日17:16:00

SimpleDateFormat 无法使用以下模式解析字符串:

yyyy-MM-dd'T'HH:mm:ssz
yyyy-MM-dd'T'HH:mm:ssZ

我可以显式设置要用于的TimeZoneSimpleDateFormat获得预期的输出,但我认为这不是必需的。我有什么想念的吗?有替代的日期解析器吗?


阅读 864

收藏
2020-03-08

共1个答案

一尘不染

在此模式中,包含“ z”日期时间部分表示时区格式需要符合一般时区 “标准”,例如Pacific Standard Time; PST; GMT-08:00

“ Z”表示时区符合RFC 822时区标准,例如-0800。

我认为你需要一个DatatypeConverter ...

@Test
public void testTimezoneIsGreenwichMeanTime() throws ParseException {
    final Calendar calendar = javax.xml.bind.DatatypeConverter.parseDateTime("2010-04-05T17:16:00Z");
    TestCase.assertEquals("gotten timezone", "GMT+00:00", calendar.getTimeZone().getID());
}
2020-03-08