2

もともと私はActionscriptで解決策を探しています。この質問のポイントは、時計が夏時間に切り替える必要がある正確な分を検出するアルゴリズムです。

たとえば、10 月 25 日から 31 日の間で、実際の日付が日曜日かどうか、2 時前後かどうかを確認する必要があります...

4

2 に答える 2

4

夏時間を処理するための実際のアルゴリズムはありません。基本的に、すべての国は、DSTがいつ開始および終了するかを自分で決定できます。開発者として私たちができる唯一のことは、ある種のテーブルを使用してそれを検索することです。ほとんどのコンピューター言語は、そのようなテーブルを言語に統合します。

Javaでは、 TimeZoneクラスのinDaylightTimeメソッドを使用できます。DSTが特定の年に開始または終了する正確な日時を知りたい場合は、JodaTimeを使用することをお勧めします。標準ライブラリだけを使用してこれを見つけるための明確な方法を見つけることはできません。

次のプログラムは例です:(特定のタイムゾーンに特定の年の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()));
    }
}
于 2008-09-30T20:08:41.553 に答える