2

私は4桁の日付を持っています。2050 年以降の入力に出くわしました。私のアプリケーション "0150"ではJanuary 01 2050. しかし、フォーマットすると、次の出力が返されます。

Sun Jan 01 00:00:00 PKT 1950




 public static Date getFormatDate( String newformat, String dateValue ) throws Exception {

        try {

            SimpleDateFormat simpleDateFormat = new SimpleDateFormat( newformat );
            java.util.Date newdate = simpleDateFormat.parse( dateValue );
            return newdate;
        }
        catch( Exception e ) {
            System.out.println( "Exception in converting date format --->" + e );
            throw e;
        }
    }

    public static void main( String[] args ) throws Exception {        
        System.out.println(getFormatDate( "MMyy", "0150" ));
    }

これを解決するための助けをいただければ幸いです。

4

2 に答える 2

6

API ドキュメントによると、SimpleDateFormatは 2 桁の年フィールドを解析するため、結果は「SimpleDateFormat インスタンスが作成された時点から 80 年前から 20 年以内」になります。

要件に合わせて動作を変更する場合は、メソッドを使用set2DigitYearStartして、日付がマップされる 100 年の期間の開始を設定できます。

于 2013-04-09T13:02:09.410 に答える
5

SimpleDateFormat javadoc から:

省略された年パターン (「y」または「yy」) を使用して解析する場合、SimpleDateFormat は省略された年をある世紀に相対的に解釈する必要があります。これは、SimpleDateFormat インスタンスが作成された時点から 80 年前から 20 年間以内になるように日付を調整することによって行われます。

あなたの場合、1950年は今日から80年以内です。

正しい日付 (2050 年) を取得するには、SimpleDateFormat.set2DigitYearStart(Date)を呼び出す必要があります。

于 2013-04-09T13:01:43.907 に答える