1

私のアプリケーションでは、以下の形式で指定された2つの異なる日付を比較する必要があります。

入力:文字列形式の入力日付は2つあります。

String actual="11/12/2012 11:26:04 AM";
String expected="21/12/2012 09:49:12 AM";

比較のために以下のJavaコードを使用しようとしています。


SimpleDateFormat format= new SimpleDateFormat("dd/MM/YYYY hh:mm:ss a");
Date date1 = format.parse(actual);
System.out.println("Formated date1 is: "+format.format(date1).toString());       
// prints  :  01/01/2012 11:26:04 AM  Why????

Date date2= format.parse(expected);
System.out.println("Formated date2 is: "+format.format(date2).toString());        
// prints :  01/01/2012 09:49:12 AM  Why????

Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
if( !(cal1.compareTo(cal2)<=0))
{
 result=false;
 String errMsg +="Actual:"+actual+" date is not before or equal to expected:"+expected+" date\n";
 System.out.println(errMsg);
}

しかし、上記のコードは期待どおりに機能していません。コメントに記載されている間違った出力を確認してください

フォーマットに問題があると思います。誰か助けてくれませんか。

4

3 に答える 3

5

フォーマットは次のようになります:

SimpleDateFormat format= new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a");

小文字のyyearで通知

于 2013-01-03T09:58:32.920 に答える
3

試す:

SimpleDateFormat format= new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a");

Yは小文字である必要があります。

于 2013-01-03T09:58:08.633 に答える
0

JodaTimeをご利用いただけます。それは本当に素晴らしい方法を持っていますisBefore()

ここに画像の説明を入力してください

String actual = "11/12/2012 11:26:04 AM";
String expected = "21/12/2012 09:49:12 AM";

DateTimeFormatter fmt = DateTimeFormat.forPattern("dd/MM/YYYY hh:mm:ss a");
DateTime dateTime1 = fmt.parseDateTime(actual);
DateTime dateTime2 = fmt.parseDateTime(expected);


if (dateTime1.isBefore(dateTime2)) {
    System.out.println("awesome");
}
于 2013-01-03T10:07:13.313 に答える