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

标签 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”时区设置,我得到了正确的格式,但是 - 当然 - 在我的特定时区......

有什么想法吗?

最佳答案

请参阅 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/

相关文章:

java - 如何向 Java 通用通配符列表添加元素

java - 使用 Java 套接字发送文件,丢失数据

mysql - 如何更新 MySQL 中的两个(或更多)可靠列

java - 获取不同时区的相同日期

sql - 从日期时间减去一天

java - 在获取 UTC Android 中的实际时间时遇到问题

java - 使用 Java 在基于网页的页面上录制/播放音频

java - 导入 java.util.Date 时遇到问题

c# - 获取此格式的日期时间 : 2018-10-26T16:44:38+01:00

java - 方法的用例,System.identityHashCode(Object x)