gpt4 book ai didi

java - SimpleDateFormat - 时区不正确

转载 作者:行者123 更新时间:2023-12-01 17:42:03 26 4
gpt4 key购买 nike

我在用 Java 解析时间戳时遇到问题。

我希望两个时间戳位于同一时区 (CET)。

    SimpleDateFormat sdaf = new SimpleDateFormat ("dd.MM.yyyy HH:mm:ss");

String str = "30.03.2013 06:00:00";
sdaf.setTimeZone (TimeZone.getTimeZone ("CET"));
java.util.Date dat = sdaf.parse (str);
System.out.println (str + " = " + dat);

str = "31.03.2013 05:00:00";
sdaf.setTimeZone (TimeZone.getTimeZone ("CET"));
dat = sdaf.parse (str);
System.out.println (str + " = " + dat);

但事实并非如此 - 请参阅输出。

30.03.2013 06:00:00 = Sat Mar 30 06:00:00 CET 2013
31.03.2013 05:00:00 = Sun Mar 31 05:00:00 CEST 2013

编辑:

如果我将 CET 更改为 GMT+1,我就会得到这个。

 03.2013 06:00:00 = Sat Mar 30 06:00:00 CET 2013
31.03.2013 05:00:00 = Sun Mar 31 06:00:00 CEST 2013

看来是正确的。但为什么 CET 不起作用?

UTC+1 产生

30.03.2013 06:00:00 = Sat Mar 30 07:00:00 CET 2013
31.03.2013 05:00:00 = Sun Mar 31 07:00:00 CEST 2013

与 GMT+1 有什么不同 - ??????

最佳答案

您无法获取 31.03.2013 05:00:00CET 时区,因为它不再位于该时区。要理解,只需检查两个时区的名称即可

  • CET:中欧时间(UTC+1GMT+1)
  • CEST:中欧夏令时(UTC+2GMT+2)

这是 2013 年 3 月 31 日 02:00:00 发生的夏令时。因此,您无法获得第二个日期的 CET 时区,因为它位于夏季“时区”。

如果你解析31.03.2013 02:00:00你会得到

31.03.2013 02:00:00 = Sun Mar 31 03:00:00 CEST 2013

因为当天 02:00:00 发生了夏令时,变成了 03:00:00。

您可以使用TimeZone.inDaylightTime(Date)来检查

String str = "30.03.2013 06:00:00";
java.util.Date dat = sdaf.parse (str);
System.out.println (str + " = " + dat);
System.out.println("SDT : " + TimeZone.getTimeZone("CET").inDaylightTime(dat));

30.03.2013 06:00:00 = Sat Mar 30 06:00:00 CET 2013
SDT : false

str = "31.03.2013 02:00:00";
dat = sdaf.parse (str);
System.out.println (str + " = " + dat);
System.out.println("SDT : " + TimeZone.getTimeZone("CET").inDaylightTime(dat));

31.03.2013 02:00:00 = Sun Mar 31 03:00:00 CEST 2013
SDT : true

由于 CETUTC+1GMT+1 相同,并且 CEST 变为 UTC+2GMT+2,当您强制将日期设置为 GMT+1 时,您将得到与 CET 等效的值code> 但没有考虑 SDT 参数。

注意:这是 LocalDateTime 不使用 TimeZone 进行大部分处理的原因之一。

关于java - SimpleDateFormat - 时区不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50289039/

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