我想比较当前日期(2016-08-31)与给定日期(2016-08-31)。 我的当前移动设备时区是GMT-08:00太平洋时间。比较日期使用GregorianCalendar
如果我在设备上禁用自动日期&时区并将时区设置为GMT + 08:00 Perth,则method1将返回true,但method2返回false;
由于我比较了没有时区的日期,因此预计方法2的结果,因此“2016-08-31”之前的“2016-08-31”为false;为什么method1返回true?
public boolean method1() {
try {
GregorianCalendar currentCalendar = new GregorianCalendar();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date endDate = sdf.parse("2016-08-31");
Calendar endCalendar = new GregorianCalendar();
endCalendar.setTime(endDate);
if (endCalendar.before(currentCalendar)) {
return true;
} else {
return false;
}
} catch (ParseException e) {
...
}
}
public boolean method2() {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date currentDate = sdf.parse(formatter.format(new Date()));
Date endDate = sdf.parse("2016-08-31");
if (endDate.before(currentDate)) {
return true;
} else {
return false;
}
} catch (ParseException e) {
...
}
}
谢谢@Basil Bourque,它非常详细。 – Huigege