1

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;
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 に答える