gpt4 book ai didi

java - org.joda.时间|夏令时 (DST) 和本地时区偏移

转载 作者:搜寻专家 更新时间:2023-10-31 08:23:00 26 4
gpt4 key购买 nike

只是为了验证这一点:我有这种蹩脚且脑残的方法来计算我当前位置的时区偏移量。我想知道当夏令时出现问题时是否需要调整它(目前我们所在的位置有冬令时,CET 时区,因此很难验证)。

// The local time zone's offset
private int getLocalOffset() {
DateTimeZone defaultZone = DateTimeZone.getDefault();
return defaultZone.getOffset(null) / 1000 / 60 / 60;
}

感谢任何提示。

最佳答案

时区和夏令时是一场噩梦。你当然不应该自己承担这项任务。让 Joda-Time 完成繁重的工作。

参见 this answer类似问题,Using Joda time to get UTC offset for a given date and timezone .类(class)DateTimeZone提供 getOffset()方法。

Java 7 中 Joda-Time 2.3 中的示例源代码......

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.

org.joda.time.DateTimeZone californiaTimeZone = org.joda.time.DateTimeZone.forID("America/Los_Angeles");

org.joda.time.DateTime now = new org.joda.time.DateTime(californiaTimeZone);
int millisecondOffsetToAddToUtcToGetLocalTime = californiaTimeZone.getOffset( now );

System.out.println( "millisecondOffsetToAddToUtcToGetLocalTime: " + millisecondOffsetToAddToUtcToGetLocalTime );

// Note the casting to doubles to avoid integer truncation. Time zone offsets are NOT always whole hours.
System.out.println( "Offset in decimal hours: " + (double)millisecondOffsetToAddToUtcToGetLocalTime / 1000d / 60d / 60d );

在 2013-11-20T01:03:56.464-08:00 运行时...

millisecondOffsetToAddToUtcToGetLocalTime: -28800000
millisecondOffsetToAddToUtcToGetLocalTime in hours: -8.0

重要 偏移量的数字格式-8.0不正确。必须是:

  • -08:00 带有冒号和两位数(用前导零填充)。
  • -08 带前导零。

关于java - org.joda.时间|夏令时 (DST) 和本地时区偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19978570/

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