gpt4 book ai didi

java - 将 ZoneId 和时间戳转换为 java 8 中的格式化日期字符串,考虑夏令时

转载 作者:行者123 更新时间:2023-12-01 17:53:54 25 4
gpt4 key购买 nike

我有一些日志,并且每条日志消息都有一个时间戳,因此我想在 Java 8 中以用户友好的格式显示日志消息的时间戳,并使用 java.time API。

例如,假设我有:

  • 一个List<Long>它存储了我所有的日志时间戳。
  • 一个ZoneId它描述了我想用来转换时间戳的区域。事实上,它是Europe/Paris所以我必须考虑夏令时(简称DST)。
  • 一个DateTimeFormatter它描述了我想要的字符串格式。

然后,我想将列表中的每个时间戳转换为描述我区域中此时间戳的字符串,因为知道由于 DST,两个时间戳之间的偏移可能会有所不同

我怎样才能做到这一点?

最佳答案

java.time API ZonedDateTime类自动处理DST 。因此,这是一个示例实现。

public static void main(String[] args) {
List<Long> timestamps = new ArrayList<>();
List<String> result = timestamps.stream()
.map(timestamp -> convert(timestamp))
.collect(Collectors.toCollection(ArrayList::new));
}

public static String convert(Long epochMilli) {
Instant now = Instant.ofEpochMilli(epochMilli);
ZoneId zoneId = ZoneId.of("Europe/Paris");
ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(now, zoneId);
DateTimeFormatter isoDateFormatter = DateTimeFormatter.ISO_DATE;
return zonedDateTime.format(isoDateFormatter);
}

关于java - 将 ZoneId 和时间戳转换为 java 8 中的格式化日期字符串,考虑夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47096449/

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