【发布时间】:2016-09-13 21:47:53
【问题描述】:
我正在尝试将当前日期 (2016-08-31) 与给定日期 (2016-08-31) 进行比较。 我当前的移动设备时区是 GMT-08:00 太平洋时间。
如果我在设备上禁用自动日期和时区并将时区设置为 GMT+08:00 Perth,method1 将返回 true,但 method2 返回 false;
method2的结果是预期的,因为我比较了没有时区的日期,所以“2016-08-31”之前的“2016-08-31”是假的;为什么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) {
...
}
}
【问题讨论】:
标签: android date gregorian-calendar