2016-04-07 9 views
2

次のWebサイトによれば、英国の夏時間は、Mar-2016 1:00:00(24時間形式)から開始されます。 http://www.timeanddate.com/time/change/uk/london?year=2016 次に、次のコードがfalseを出力する理由は何ですか?コーナー日付のJava 5でのDST処理

import java.text.ParseException; 
import java.util.Calendar; 
import java.util.GregorianCalendar; 
import java.util.TimeZone; 

public class BSTGMTDetector 
{ 
    public static void main(String[] args) throws ParseException 
    { 
     TimeZone def = TimeZone.getTimeZone("Europe/London");  

     Calendar cal = new GregorianCalendar(); 

     cal.clear(); 
     cal.set(2016, 2, 27,2,01,01); 

     boolean isInDaylight = def.inDaylightTime(cal.getTime()); 
     System.out.println("Date[" + cal.getTime() + "] is in DST[" + isInDaylight + "]");  

    } 
} 


Output : Date[Sun Mar 27 02:01:01 IST 2016] is in DST[false] 

答えて

0

校正のためのタイムゾーンは変数は呼び出し

def.inDaylightTime(cal.getTime()); 

日はに渡されIST.So、ある

Calendar cal = new GregorianCalendar(); 

、あなたのシステムがあなたを定義IST.Whenを維持しているようですこのメソッドはISTタイムゾーンで実行されます.DSTは英国の27日目、06:30:00 ISTから開始されます。したがって、O/Pの動作。

+0

日時解析にはSimpleDateFormatを使用し、カレンダーの月インデックスは0(1月)から始まることを覚えておいてください。 – Hailey

+0

USe joda time to better results – Hailey

関連する問題