我从Web服务获取日期,dd / mm / yyyy hh:mi:ss。 像这样:10/10/2011 12:00:00
并且,我正在尝试验证此日期是否在实际日期之前,但是当我无法将其与“if”进行比较时。
代码:
private static Date formatDate(String data) throws Exception{
if (data == null || data.equals("")){
return null;
}
Date date = null;
try {
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
date = (java.util.Date)formatter.parse(data);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
我比较的方法:
Date planeDate = null;
try {
planeDate = formatDate(date);
} catch (Exception e) {
e.printStackTrace();
}
Calendar currentcal = Calendar.getInstance();
currentcal.set(currentcal.get(Calendar.DAY_OF_MONTH),
currentcal.get(Calendar.MONTH),
currentcal.get(Calendar.YEAR),
currentcal.get(Calendar.HOUR_OF_DAY),
currentcal.get(Calendar.MINUTE),
currentcal.get(Calendar.SECOND));
Date current = currentcal.getTime();
//Always return false
if(planeDate != null){
if(planeDate.before(current) || planeDate.equals(current)){
return true;
} else {
return false;
}
}
return false;
答案 0 :(得分:0)
您实例化日历对象的代码具有不正确的参数顺序。因此是错误的结果。
set
方法的正确签名是这样的:
public final void set(int year, int month, int date, int hourOfDay, int minute, int second)
您的set方法代码的参数顺序如下:
currentcal.set(currentcal.get(Calendar.DAY_OF_MONTH),
currentcal.get(Calendar.MONTH),
currentcal.get(Calendar.YEAR),
currentcal.get(Calendar.HOUR_OF_DAY),
currentcal.get(Calendar.MINUTE),
currentcal.get(Calendar.SECOND));
因此,您的日历实例实际上返回一个日期对象,如下所示:
Mon Jan 02 18:50:36 GMT+05:30 8
实际上应该是附近的东西
Mon Jul 02 18:50:56 GMT+05:30 2012
按如下方式更改set
方法输入,然后比较日期。然后它应该工作。
currentcal.set(
currentcal.get( Calendar.YEAR ),
currentcal.get( Calendar.MONTH ),
currentcal.get( Calendar.DAY_OF_MONTH ),
currentcal.get( Calendar.HOUR_OF_DAY ),
currentcal.get( Calendar.MINUTE ),
currentcal.get( Calendar.SECOND )
);