【发布时间】:2023-03-15 04:15:01
【问题描述】:
我想以特定的 ISO 8601 格式格式化 UTC 日期时间,例如 2020-02-28T14:10:23+00:00 但不是 2020-02-28T14: 10:23Z。最后我不想要 Z,而是 +00:00。我尝试了simpleDateFormat doc 中的所有格式,但似乎没有任何格式可以提供上述格式。
我知道无论格式如何,两者都代表相同的时间,但出于向后兼容性的原因,它需要像这样格式化。
这是我试过的java代码,
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(sdf.format(new Date()));
可以通过将格式化字符串中的 z 替换为 +00:00 来实现,但这似乎不是一个好的选择。
【问题讨论】:
-
@AndyTurner 是的,这是正确的格式。你可以参考en.wikipedia.org/wiki/ISO_8601
-
也许docs.oracle.com/javase/8/docs/api/java/time/format/… ?它看起来像您要求的格式。
-
@user85421 感谢您的评论,但它给出的结果类似于 2020-02-28T14:10:23+0000 没有:介于两者之间
-
您应该不使用过时的
Date和SimpleDateFormat类。使用较新的日期和时间 API(来自java.time包)。
标签: java datetime datetime-format iso8601