我想输出一个带有PST偏移量的时间戳(例如2008-11-13T13:23:30-08:00)。java.util.SimpleDateFormat
似乎不会以小时:分钟格式输出时区偏移量,它会省略冒号。在Java中,是否有简单的方法可以获得该时间戳?
// I want 2008-11-13T12:23:30-08:00
String timestamp = new SimpleDateFormat("yyyy-MM-dd'T'h:m:ssZ").format(new Date());
System.out.println(timestamp);
// prints "2008-11-13T12:23:30-0800" See the difference?
此外,
SimpleDateFormat
无法正确解析上面的示例。它会抛出 ParseException
异常。// Throws a ParseException
new SimpleDateFormat("yyyy-MM-dd'T'h:m:ssZ").parse("2008-11-13T13:23:30-08:00")
SimpleDateFormat
和Date
。那些类设计得很差,而且早已过时,前者尤其麻烦。使用java.time
中的OffsetDateTime
或ZonedDateTime
,这是现代Java日期和时间API。请参见Arvind Kumar Avinash的答案。 - Ole V.V.