2008-09-16 10 views
1

元私はActionscriptで解決策を探しています。この質問のポイントは、クロックが夏時間を切り替える必要がある場合、正確な分を検出するアルゴリズムです。 25日と実際の日付が、それは2時前または後の日曜日であるされている場合、我々は、チェックする必要があり、10月31日の間に例えばので日付の夏時間を決定するアルゴリズムはありますか?

...

答えて

3

のための本当のアルゴリズムはありません夏時間を扱う基本的には、各国が自分自身を決定することができます.DSTの開始と終了はいつでも可能です。私たちが開発者として行うことができるのは、それを調べるために何らかの種類のテーブルを使用することだけです。ほとんどのコンピュータ言語は、そのような表をその言語で統合します。

Javaでは、TimeZoneクラスのinDaylightTimeメソッドを使用できます。 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())); 
    } 
} 
+0

ので取りジョダには作り付けの方法がありません"DateTime"と "DateTimeZone"は、datetimeがDaylightかどうかを教えてくれますか? – russau

+0

@ russau(A)はい、russau、Joda-Time 2.3にはこのような組み込みメソッドがあります。別の質問で[私の答え](http://stackoverflow.com/a/19870158/642706)を参照してください。 (B)あなたはこのオリジナルのポスターとは別の質問をしています。 –

関連する問題