【发布时间】:2018-10-04 09:38:40
【问题描述】:
我有以下日期时间助手方法,可将 UTC 分区的 Java 8 Date 转换为日期时间字符串:
public static String dateTimeString(Date date) {
return date.toInstant().atZone(ZoneId.of("UTC")).toLocalDateTime().toString();
}
期望的结果是总是将结果字符串格式化为:
YYYY-MM-dd'T'HH:mm:ss'Z'
问题是,Java 8 LocalTime#toString() 有意去除了零的时间分量。例如,如果我有一个代表 2018 年 6 月 8 日 12:35:00 UTC 的 Date 实例。那么上面这个方法的输出就是:2018-06-08'T'12:35'Z'。而我希望它包含任何归零的秒/分钟/小时组件(例如 2018-06-08'T'12:35:00'Z')。
有什么想法吗?
【问题讨论】:
-
显然,您可以创建自己的 DateTimeFormat 来格式化它,除非没有遗漏。我没有别的想法。
-
我会接受@DreamspacePresident (+1) 作为解决方案——关于该代码的外观有什么想法吗?
-
感谢@OleV.V。 (+1) 但是,该问题的公认答案使用
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss:SSS"),它不是 UTC 分区的。 -
好的,hotmeatballsoup,我用代码作为答案发布了它。