用于角落日期的Java 5中的DST处理

时间:2016-04-07 09:32:38

标签: java timezone

根据以下网站,英国的夏令时从2016年3月27日1:00:00开始(24小时时间格式) http://www.timeanddate.com/time/change/uk/london?year=2016 那么为什么以下代码打印为false?

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]

1 个答案:

答案 0 :(得分:0)

您的系统似乎维持IST。当您定义时,

Calendar cal = new GregorianCalendar();

cal 变量的时区是IST.So,当调用

def.inDaylightTime(cal.getTime());

在IST时区将日期传递给此方法。因此,DST将于美国东部时间2007年3月27日06:30:00开始。 因此,你的O / P行为。