gpt4 book ai didi

java - 使用 java.time.DateTimeFormatter 格式化 java 日期(包括时间偏移量)

转载 作者:行者123 更新时间:2023-11-30 03:09:46 24 4
gpt4 key购买 nike

我目前正在努力重构这段旧代码以使用新的java.time.format.DateTimeFormatter,因为它在我们的主日志记录组件中使用,这会产生不必要的垃圾。

private String getFormattedDate(final Date date) {
// a new instance is created foreach log message
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
return dateFormat.format(date);
}

我已经尝试过新的 ISO_INSTANT 格式化程序,例如:

DateTimeFormatter.ISO_INSTANT.format(date.toInstant());

但这给出了与以前(略有)不同的输出。

我的测试显示:

Expected: is "2013-10-22T05:23:48.397+0200"
but: was "2013-10-22T03:23:48.397Z"

因此,我需要将时区偏移量包含在格式字符串中,如预期中所示。

我知道 DateTimeFormatterBuilder 但我没有设法以某种方式构建它来获得我想要的格式输出。

我需要怎么做?我知道我总是可以回退到使用单线程本地 SimpleDateFormat 实例,但我想使用新的 java.time 东西:-)

最佳答案

Date date = new Date();

System.out.println(DateTimeFormatter.ISO_INSTANT.format(date.toInstant()));
// output: 2015-11-22T14:46:08.776Z

System.out.println(DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(
date.toInstant().atZone(ZoneId.systemDefault())));
// output: 2015-11-22T15:46:08.776+01:00

System.out.println(DateTimeFormatter.ISO_OFFSET_DATE_TIME
.withZone(ZoneId.systemDefault())
.format(date.toInstant()));
// output: 2015-11-22T15:46:08.776+01:00

关于java - 使用 java.time.DateTimeFormatter 格式化 java 日期(包括时间偏移量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33855495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com