質問

私はSimpleDateFormatのクラスとjava.util.DateのcompareToメソッドについての質問を持ってます:

私はDateオブジェクトを構築していますし、私はフォーマット、最終的に私は、フォーマットされた文字列を解析し、元の日付と比較します。

DateFormat df = new SimpleDateFormat("yyyy.MMMdd hh:mm:ss SSS");
Date originalDate = new Date();

String s = df.format(originalDate);
Date parsedDate = df.parse(s);

System.out.println("Original date: " + originalDate);
System.out.println("Formatted date: " + s);
System.out.println("originalDate compareTo parsedDate: " + originalDate.compareTo(parsedDate));

結果:

  

オリジナル日付:月1月25日15時43分23秒CET   2010フォーマットされた日付:2010.jan.25   三時43分23秒868 originalDateのcompareTo   parsedDate:1

なぜ私は常に「1」を取得していますか?なぜ、解析された日付よりも元の日付おろし金?

役に立ちましたか?

解決

私はあなたの H代わりの Hのの書式指定子を使用し、このため、あなたの解析された1は、12時間形式でありながら、あなたの元の日付が、それは、そう午後3時、15だ、それは24時間関連する問題だと思いますの書式指定子。バック解析され03が3AMと考えられているので、あなたが精度を失うので、あなた時間は、間違った文字列に変換されます。してみます:

DateFormat df = new SimpleDateFormat("yyyy.MMMdd HH:mm:ss SSS");

他のヒント

あなたはAM / PMマーカーを追加する場合、それは動作します - a

DateFormat df = new SimpleDateFormat("yyyy.MMMdd hh:mm:ss SSS a");

あなたは単におそらくgetTimeを使用して、日付を比較したい場合は()2つの値を比較することは良いアイデアだろう...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top