ジャワのSimpleDateFormatとのcompareTo
-
18-09-2019 - |
質問
私は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つの値を比較することは良いアイデアだろう...
所属していません StackOverflow