0

Javaで2つの日付を比較しようとしています。次のコードは問題なく動作しますが、入力日付の日付形式が変更される可能性がある状況を処理したいと考えています。

たとえば、次のコードでは、2 つの日付の日付形式は yyyy/mm/dd hh:mm:ss am です。ただし、入力日付に追加の空白/改行文字が含まれている場合があり、これにより例外が発生します。

java.text.ParseException: Unparseable date: "02/14/2013
    07:00:00 AM"      

以下は、実行しようとしているコードです。

        try 
        {
            Date date1 = (Date)DATE_FORMAT_yyyy_mm_dd_hh_mm_ss.parse(slaTime); // usually the data comes as 2013/02/03 09:09:09 AM
            Date date2 = (Date)DATE_FORMAT_yyyy_mm_dd_hh_mm_ss.parse(actualTime);// usually the data comes as 2013/02/03  09:06:09 AM

            // a error occurs
            if(date1.before(date2))
            {
                return "True";
            }
            else
            {
                return "False";
            }
        } 
        catch (ParseException e) 
        {
        e.printStackTrace();

        }

これをどのように処理しますか?

4

2 に答える 2

1

年の月の場合、m の代わりに M を使用します

正しい日付形式はyyyy/MM/dd hh:mm:ss aaa. また、追加のスペースまたは改行がある場合は、それを削除する必要があります。そうしないと、現在までの文字列の解析に失敗するため、 format と完全に一致する必要があります。

すべてのスペースと改行文字を削除してから解析することをお勧めします。

yyyy/MM/ddhh:mm:ssaaaスペースがない場合は、次のような形式を使用できます。そして、すべてのスペースと新しい行を空の文字列に置き換えます。

Date date = new SimpleDateFormat("yyyy/MM/ddhh:mm:ssaaa").parse("2013/02/1407:00:00AM");

実際のコードは次のようになります-

dateString = dateString.replaceAll("\\s","");
SimpleDateFormat("yyyy/MM/ddhh:mm:ssaaa").parse(dateString);
于 2013-02-21T09:20:41.687 に答える