java - 确定日期夏令时的算法?

标签 java actionscript

最初我是在 Actionscript 中寻找解决方案。这个问题的重点是算法,当时钟必须切换夏令时时,该算法会检测精确的分钟。

例如,在 10 月 25 日到 31 日之间,我们必须检查实际日期是否是星期日,是在 2 点之前还是之后...

最佳答案

没有真正的算法来处理夏令时。基本上每个国家/地区都可以自行决定夏令时何时以及是否开始和结束。作为开发人员,我们唯一能做的就是使用某种表格来查找它。大多数计算机语言都在语言中集成了这样的表。

在 Java 中,您可以使用 TimeZoneinDaylightTime 方法。类(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/

相关文章:

actionscript-3 - 私有(private)函数被继承

java - 我想使用 XPath 检索 XML 属性值

java - jdeps 在 fat jar 中使用 Java 11 和 JavaFX 失败

java - JFXPanel setScene 使用 Java 11 卡住

flash - ActionScript 语音识别库

apache-flex - Flex 弹出窗口管理器,在弹出窗口外按下鼠标可删除弹出窗口

java - Azure 服务总线 - Java 应用程序的集成测试方法

java - 如何将 fragment 的值设置为不同的 Activity

apache-flex - 如何隐藏垂直滚动条(不禁用它)?

flash - Actionscript3 SSL 套接字