SimpleDateFormat忽略" XXX"如果时区设置为" UTC"

时间:2016-01-11 14:16:37

标签: java date datetime timezone utc

我尝试按以下格式输出当前日期时间为UTC: 2016-01-11T14:08:42 + 00:00

final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));

final String dateString = formatter.format(new Date());

" dateString"现在应该包含" 2016-01-11T14:08:42 + 00:00"但它包含" 2016-01-11T14:08:42Z"。

没有" UTC"时区设置我得到了正确的格式,但 - 当然 - 在我的特定时区......

有什么想法吗?

1 个答案:

答案 0 :(得分:11)

请参阅SimpleDateFormat的文档:

  

格式化[使用ISO 8601时区],如果GMT的偏移值为0,则" Z"生产。

所以,这种行为是预期的。

你可以:

  • 使用RFC 822时区格式化程序ZZZ;但是,这会产生" + 0000"
  • 操纵字符串以替换最终的Zstr.replaceAll("Z$", "+00:00")