根据以下网站,英国的夏令时从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]
答案 0 :(得分:0)
您的系统似乎维持IST。当您定义时,
Calendar cal = new GregorianCalendar();
cal 变量的时区是IST.So,当调用
时def.inDaylightTime(cal.getTime());
在IST时区将日期传递给此方法。因此,DST将于美国东部时间2007年3月27日06:30:00开始。 因此,你的O / P行为。