我想比较一个特定时期的日期。 我之前和之后都使用这些方法。 这是我的方法。
public boolean compareDatePeriod() throws ParseException
{
[.....]
if (period.getDateStart().after(dateLine)){
if (period.getDateEnd().before(dateLine)){
result = true;
}
}
;
return result;
}
如果我的dateLine =“01/01/2012”和我的period.getDateStart()=“01/01/2012”。 我回复假。我不明白为什么?
答案 0 :(得分:1)
如果您在发布问题之前请检查Java documentation,您会知道方法after
会返回:
当且仅当此Date对象表示的瞬间为时,才为true 严格地比当时表示的时刻晚;否则就是假的。
在您的情况下,日期相等,这意味着它们不是strictly later
。因此它将返回false
<强>更新强>
public boolean compareDatePeriod() throws ParseException
{
[.....]
if (!period.getDateStart().equals(dateLine)) {
if (period.getDateStart().after(dateLine)){
if (period.getDateEnd().before(dateLine)){
result = true;
}
}
return result;
}
答案 1 :(得分:1)
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date startDate = dateFormat.parse("01/01/2012");
Date endDate = dateFormat.parse("31/12/2012");
Date dateLine = dateFormat.parse("01/01/2012");
boolean result = false;
if ((startDate.equals(dateLine) || !endDate.equals(dateLine))
|| (startDate.after(dateLine) && endDate.before(dateLine))) { // equal to start or end date or with in period
result = true;
}
System.out.println(result);