そのdateString1.compareTo(dateString2)
ため、各文字の Unicode 値に基づいて、文字列との辞書式比較を行い、int を返すを使用しています。これがコードサンプルです。
String dateString1 = "05-12-2012";
String dateString2 = "05-13-2012";
if (dateString1.compareTo(dateString2) <=0){
System.out.println("dateString1 is an earlier date than dateString2");
}
Javaで日付を比較するこれは間違ったアプローチですか?
私のテストでは、予期しない結果が得られる状況には遭遇しませんでした。長時間実行されるループ内でこれを行っているため、必要がなければ、文字列から Date オブジェクトを作成したくありません。
Ninja Edit
以下の回答から収集すると、日付がyyyyMMdd
形式の場合は文字列として比較しても問題はありませんが、他の形式の場合は明らかにエラーになります。
実際のコードでは、実際に日付文字列をyyyyMMdd
フォーマットとして使用しています。(上記の例では、フォーマットを間違って入力しました。) したがって、今のところ、コードはそのままにして、決定を正当化するために数行のコメントを追加します。
しかし、このような文字列の比較は非常に制限的であり、dba が将来的に日付形式を変更することを決定した場合、バグに遭遇することがわかりました。