我正在尝试解析一个看起来像这样的日期:
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
我可以显式设置要用于的TimeZone以SimpleDateFormat获得预期的输出,但我认为这不是必需的。我有什么想念的吗?有替代的日期解析器吗?
TimeZone
SimpleDateFormat
在此模式中,包含“ z”日期时间部分表示时区格式需要符合一般时区 “标准”,例如Pacific Standard Time; PST; GMT-08:00。
Pacific Standard Time; PST; GMT-08:00
“ Z”表示时区符合RFC 822时区标准,例如-0800。
我认为你需要一个DatatypeConverter ...
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()); }