2011-01-14 7 views
0

が動作していない......カレンダーの比較は、私はこのコードを書かれており、その作業をしていない

indate = "13/1/2011"

Calendar cd1 = Calendar.getInstance(); 
     String[] StartDate = split(inDate.trim(),"/"); 
     cd1.set(Calendar.DAY_OF_MONTH, Integer.parseInt(StartDate[0])); 
     cd1.set(Calendar.MONTH, Integer.parseInt(StartDate[1])); 
     cd1.set(Calendar.YEAR, Integer.parseInt(StartDate[2])); 

currentDate ="14/1/2011" 
     String CurrentDate = com.connection.loginscreen.currentDate; 
     Calendar cd2 = Calendar.getInstance(); 
     String[] resultc = split(CurrentDate.trim(), "/"); 
     cd2.set(Calendar.YEAR, Integer.parseInt(resultc[2])); 
     cd2.set(Calendar.MONTH, Integer.parseInt(resultc[0])); 
     cd2.set(Calendar.DAY_OF_MONTH, Integer.parseInt(resultc[1])); 

     if (cd1.before(cd2)) 
     { 
      check ="1"; 
     } 

それが機能していません...人間は通常、読み一方/ ...

cd1.set(Calendar.MONTH, Integer.parseInt(StartDate[1])); 

Calendar.MONTHはゼロベースです..

+0

動作していますか? –

+0

申し訳ありません現在の日付は2011年1月14日です。 – Sourabh

+0

各カレンダーの値に 'System.out.println(new SimpleDateFormat(" yyyy/MM/dd HH:mm:ss ")。format(cd1.getTime()))'を実行してデバッグしてみてください。正しく解析します。 – rodion

答えて

1

自分で解析しないでください。文字列を日付に変換するには、このように、DateFormatのを使用します。

DateFormat f = new SimpleDateFormat("dd/M/yyyy"); 
    String indate = "13/1/2011"; 
    Date cd1 = f.parse(indate); 
    String currentDate ="1/14/2011"; 
    DateFormat f2 = new SimpleDateFormat("M/dd/yyyy"); 
    Date cd2 = f2.parse(currentDate); 
    if (cd1.before(cd2)) 
    { 
     check ="1"; 
    } 

チェックSimpleDateFormat javadocsはパターンが定義されているものを見るために、それがどのように使用されています。

3

これは、あなたが望むものをほぼ確実ではありません1か月単位で書く。

特にという奇妙な形式がライブラリで処理されない限り、詳細を残しておけば、実際にはコードを解析する必要はありません。本当にJavaライブラリを利用したい場合は、SimpleDateFormatを使って解析してください。上記のような間違いや、JKが指摘したような間違いにつながるでしょう。文字列から手でXMLを構築するのと同じです:ライブラリを使用しないでください

しかし、個人的には、Javaのすべての日付/時刻の作業にJoda Timeを使用することをおすすめします。それははるかに良いAPIです。

+0

月がゼロベースであることはかなり迷惑であると思います... – keuleJ

+0

@keuleJ:そうです。それはJoda Timeを使用する*多くの理由の1つです。 –