最初我是在 Actionscript 中寻找解决方案。这个问题的重点是算法,当时钟必须切换夏令时时,该算法会检测精确的分钟。
例如,在 10 月 25 日到 31 日之间,我们必须检查实际日期是否是星期日,是在 2 点之前还是之后...
最佳答案
没有真正的算法来处理夏令时。基本上每个国家/地区都可以自行决定夏令时何时以及是否开始和结束。作为开发人员,我们唯一能做的就是使用某种表格来查找它。大多数计算机语言都在语言中集成了这样的表。
在 Java 中,您可以使用 TimeZone 的 inDaylightTime
方法。类(class)。如果您想知道某一年 DST 开始或结束的确切日期和时间,我建议使用 Joda Time 。我看不出仅使用标准库来找到此问题的干净方法。
以下程序是一个示例:(请注意,如果某个时区在某一年没有 DST,则可能会产生意外结果)
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
public class App {
public static void main(String[] args) {
DateTimeZone dtz = DateTimeZone.forID("Europe/Amsterdam");
System.out.println(startDST(dtz, 2008));
System.out.println(endDST(dtz, 2008));
}
public static DateTime startDST(DateTimeZone zone, int year) {
return new DateTime(zone.nextTransition(new DateTime(year, 1, 1, 0, 0, 0, 0, zone).getMillis()));
}
public static DateTime endDST(DateTimeZone zone, int year) {
return new DateTime(zone.previousTransition(new DateTime(year + 1, 1, 1, 0, 0, 0, 0, zone).getMillis()));
}
}
关于java - 确定日期夏令时的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70964/