gpt4 book ai didi

java - 时区未检测 DST

转载 作者:行者123 更新时间:2023-12-01 15:49:03 27 4
gpt4 key购买 nike

我已将模拟器设置为该时区:org.apache.harmony.luni.internal.util.ZoneInfo["CET",mRawOffset=3600000,mUseDst=true]

这是布鲁塞尔时间,有夏令时,因此夏季为 GMT+02:00,冬季为 GMT+01:00。

但是,通过编程方式无法检测 1970 年 7 月的夏令时,但它会检测到 2011 年的夏令时。例如:

    TimeZone tz = TimeZone.getDefault();

if(tz.inDaylightTime(new Date(15638400000))){ //This timestamp is 01/07/1970 00:00:00:00 GMT
System.out.println("daylight time in July 1970"); //Not printed, despite being clearly in summer.
}
if(tz.inDaylightTime(new Date())){ // Now, 28/06/2011
System.out.println("daylight time in June 2011"); //printed, thats OK
}

这段代码有什么问题? 1970年没有夏令时?同样的事情也发生在偏移量上,根据 javadoc,偏移量包括 DST:

    int off = tz.getOffset(15638400000); //This returns +01:00, wrong!!
int off2 = tz.getOffset(System.currentTimeMillis()); //returns +02:00, OK.

关于这种行为的一些想法?谢谢。

编辑:我对这个时区做了一些测试,检测到第一个实行夏令时的夏季是在1977年。毕竟这个政策的实现总得有一个开始日期。然而,1977年对我来说似乎有点晚了(石油危机发生在1970年和1973年)。我还没有找到任何官方文件证实这一点。

最佳答案

不了解比利时,但瑞典于 1980 年引入夏令时,因此比利时 1970 年没有夏令时可能是正确的。但是,如果真正了解 1970 年 DST 对您的应用程序非常重要,那么您可能需要深入研究 java.util.Date 类的源代码或与 的结果进行比较>java.util.GregorianCalendar.

关于java - 时区未检测 DST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6503384/

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