嗨我有问题simpledateformat + timezone这里是我的代码,我期待我的输出为25/11/2011,但它的返回为24/11/2011。我目前的时区是太平洋,我正在测试(25/11/2011)。 请帮忙。
嗨请找到完整的程序我不只是打印它我正在与当前日期进行比较,我希望输出为False,但它会变为True。
这是生产中发生的典型情况,服务器位于太平洋,用户来自伦敦。请告诉我这个问题的解决方案。
String vacationStartDate = "25/11/2011";
SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy");
//America/Los_Angeles
TimeZone tz = TimeZone.getTimeZone("Europe/London");
dateFormatter.setLenient(false);
dateFormatter.setTimeZone(tz);
Date start = dateFormatter.parse(vacationStartDate);
Date todayBeginning = new Date();
if ( start.before(todayBeginning)){
System.out.println("True ");
} else {
System.out.println("False ");
}
答案 0 :(得分:1)
这是因为您正在解析伦敦时区的日期,但会在您的时区中将其打印出来。因此,伦敦的25/11/2011 00:00:00是您的时区中的24/11/2011 16:00:00或其他任何内容。
答案 1 :(得分:0)
您的代码返回时区的当前日期,因此输出正确。请注意,TimeZone.getTimeZone("Europe/London");
是正在解析的日期的时区,因此当前时区太平洋时返回的日期将在伦敦日期之前。< / p>
答案 2 :(得分:0)