gpt4 book ai didi

java - 时区 CEST 至 GMT

转载 作者:行者123 更新时间:2023-11-30 02:05:54 24 4
gpt4 key购买 nike

我必须以这种格式输入日期时间:

"2018-07-17T12:16:50.52Z"

因此我使用:

private static final SimpleDateFormat LIVETRACK_DATE_TIME_FORMATTER =
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");

DATE_TIME_FORMATTER.parse(timeFrameFrom);

但是当我运行测试用例时出现以下错误:

Tue Jul 17 1[2:20:50 CES]T 2018> but was:<Tue Jul 17 1[0:20:50 GM]T 2018>

这是否意味着我应该将日期转换为 GMT 格式?我该如何转换它?

最佳答案

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
"EEE MMM dd HH:mm:ss zzz yyyy 'Uhr'", Locale.ROOT);

String input = "2018-07-17T12:16:50.52Z";
ZonedDateTime dateTime = Instant.parse(input)
.atZone(ZoneId.of("Europe/Berlin"));
String output = dateTime.format(formatter);
System.out.println(output);

输出:

Tue Jul 17 14:16:50 CEST 2018 Uhr

您的测试用例预计会出现错误的结果。输入字符串中的 Z 表示 UTC(与 UTC 或所谓的祖鲁时区的偏移量为零)。 UTC 时间 12:16:50.52 与中欧夏令时间 (CEST) 14:16:50.52 相同。因此,要求 Tue Jul 17 12:20:50 CEST 2018 Uhr 是错误的。

在您的代码中,您将 Z 硬编码为文字,而不是像您应该的那样将其解析为偏移量。有趣的是,这产生了单元测试预期的错误时间点,只是不在预期的时区。这可能与使用 JVM 的时区设置的 Date.toString 有关,并且测试期望这是 CEST,而实际上是 GMT。但是,您的 SimpleDateFormat 没有使用 GMT 来解析字符串(可能是 CEST),因此您没有向我们提供足够的信息来解释测试中发生的所有情况。 SimpleDateFormat 将使用相同的 JVM 设置,除非您显式设置了时区,而您发布的代码中不会发生这种情况。

链接: Oracle tutorial: Date Time解释如何使用java.time

关于java - 时区 CEST 至 GMT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51378936/

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