获取当前 UTC 的 ISO 8601 格式演示文稿的最优雅方式是什么?它应该看起来像: 2010-10-12T08:50Z
。
例子:
String d = DateFormat.getDateTimeInstance(DateFormat.ISO_8601).format(date);
原文由 yegor256 发布,翻译遵循 CC BY-SA 4.0 许可协议
获取当前 UTC 的 ISO 8601 格式演示文稿的最优雅方式是什么?它应该看起来像: 2010-10-12T08:50Z
。
例子:
String d = DateFormat.getDateTimeInstance(DateFormat.ISO_8601).format(date);
原文由 yegor256 发布,翻译遵循 CC BY-SA 4.0 许可协议
自 Java 8 以来, java.time 使其变得简单。并且线程安全。
ZonedDateTime.now( ZoneOffset.UTC ).format( DateTimeFormatter.ISO_INSTANT )
结果: 2015-04-14T11:07:36.639Z
您可能想使用更轻的
Temporal
例如Instant
或LocalDateTime
,但它们缺少时区数据格式化程序支持。只有ZonedDateTime
开箱即用。
通过调整或链接 ZonedDateTime 和 DateTimeFormatter 的选项/操作,您可以在一定程度上轻松控制 时区 和 精度:
ZonedDateTime.now( ZoneId.of( "Europe/Paris" ) )
.truncatedTo( ChronoUnit.MINUTES )
.format( DateTimeFormatter.ISO_DATE_TIME )
结果: 2015-04-14T11:07:00+01:00[Europe/Paris]
改进的要求(例如删除秒部分)仍必须由自定义格式或自定义后期处理来满足。
.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME ) // 2015-04-14T11:07:00
.format( DateTimeFormatter.ISO_LOCAL_DATE ) // 2015-04-14
.format( DateTimeFormatter.ISO_LOCAL_TIME ) // 11:07:00
.format( DateTimeFormatter.ofPattern( "yyyy-MM-dd HH:mm" ) ) // 2015-04-14 11:07
对于 Java 6 和 7,您可以考虑 java.time 的后向端口,例如 ThreeTen-Backport ,它也有一个 Android 端口。两者都比 Joda 轻,并且从 Joda 的 经验 中吸取了教训 - 特别是。考虑到 java.time 是由 Joda 的作者设计的。
原文由 Sheepy 发布,翻译遵循 CC BY-SA 3.0 许可协议
8 回答6.5k 阅读
2 回答3.3k 阅读
3 回答1.8k 阅读✓ 已解决
1 回答2k 阅读✓ 已解决
2 回答1.9k 阅读
1 回答903 阅读✓ 已解决
1 回答1.9k 阅读
使用
SimpleDateFormat
格式化任何你想要的Date
对象:使用
new Date()
如上所示将格式化当前时间。