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

SimpleDateFormat ignores "XXX" if timezone is set to "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" 时区设置,我得到了正确的格式,但是 - 当然 - 在我的特定时区...

有什么想法吗?

请参阅 SimpleDateFormat 的文档:

For formatting [using an ISO 8601 Time zone], if the offset value from GMT is 0, "Z" is produced.

所以,这种行为是意料之中的。

您可以:

  • 使用 RFC 822 时区格式化程序ZZZ;然而,这会产生“+0000”
  • 操作字符串替换最后的Zstr.replaceAll("Z$", "+00:00")