Java SimpleDateFormat忽略了“;XXX“;如果时区设置为";UTC";
我正在尝试以UTC格式输出当前日期时间,格式如下: 2016-01-11T14:08:42+00:00Java SimpleDateFormat忽略了“;XXX“;如果时区设置为";UTC";,java,date,datetime,timezone,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()); “da
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”时区设置,我会得到正确的格式,但是-当然-在我的特定时区
有什么想法吗?请参阅以下文档:
对于格式化[使用ISO 8601时区],如果GMT的偏移值为0,则生成“Z”
因此,这种行为是意料之中的
您可以:
- 使用RFC 822时区格式化程序
;但是,这会产生“+0000”ZZZ
- 操纵字符串以替换最后的
:Z
str.replaceAll(“Z$”,“+00:00”)
Z
而不是+00:00
是一种意想不到的行为。我确信这个决定背后有一个良好的意图,我只是不确定它可能是什么。但是,坚持使用Z
可能更容易。@eventhorizon Z是UTC+00:00的符号,如ISO-8601-standard中的官方定义。可能字母Z最初来自美国军事用途(Z=Zulu)。