我正在尝试以下列格式将当前日期时间输出为 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” - 处理字符串以替换最后的
Z
:str.replaceAll("Z$", "+00:00")
关于java - 如果时区设置为 "XXX",SimpleDateFormat 将忽略 "UTC",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34723683/