我想比較當前日期(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