设置了时区的SimpleDateFormat获取正确的值,但时区错误

设置了时区的SimpleDateFormat获取正确的值,但时区错误,第1张

设置了时区的SimpleDateFormat获取正确的值,但时区错误

我不认为这是一个错误,而是对行的错误理解:

    f.setTimeZone(TimeZone.getTimeZone("Europe/Madrid"));    result = f.parse(d);    log.info("The result should be 10:34 CEST: {}", result);

这是什么意思 ?

您首先设置一个时区,告诉解析器您将要解析欧洲/马德里时区的时间。

然后显示它。它无法猜测您希望在哪个时区,因此它以默认时区(在您的情况下为UTC)显示。


注意:

  • 它实际上是UTC的10:34,而马德里是12:34,而不是相反。
  • Date.getTimezoneOffset()
    是UTC与默认时区(在您的情况下为0)之间的偏移量,与用于配置解析器的时区无关。此外,从Java 1.1开始不推荐使用,您不再应该真正使用它。

要显示不同时区的日期值,

SimpleDateFormat.format()
可以使用,例如:

    f.setTimeZone(TimeZone.getTimeZone("UTC"));    log.info("UTC {}", f.format(new Date()));    f.setTimeZone(TimeZone.getTimeZone("Europe/Madrid"));    log.info("Europe/Madrid {}", f.format(new Date()));


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5153155.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存