1

我从 Web 服务获取日期,dd/mm/yyyy hh:mi:ss。像这样:2011 年 10 月 10 日 12:00:00

而且,我正在尝试验证此日期是否早于实际日期,但是当我无法将其与“如果”进行比较时。

代码:

  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;
4

1 回答 1

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 )
);
于 2012-07-02T13:22:11.257 回答