2012-04-10 13 views
1

"yyyy"の形式で年を指定する文字列を解析する必要があります。私が使用するコードスニペットは、私が4桁の文字列を使用する場合、問題は、その年に解析され、期待通りに出力されている「年が00水曜日1月1日で、「2003」と言っている"yyyy"という形式の文字列を解析します。

try{ 
     String strDate = "200323"; 
     SimpleDateFormat formatter = new SimpleDateFormat("yyyy"); 
     Date dateStr = formatter.parse(strDate); 

     System.out.println("The year is " + dateStr); 


    } 
    catch(Exception e){ 
     System.out.println("Date parse exception"); 
    } 

次のとおりです。 00:00 GMT 2003 "しかし、上記のスニペットのように4桁以上の無効な文字列を与えた場合、 "200323"と言うと、解析例外はスローされず、文字列の値が受け入れられ、出力は "January Jan Mon 01 00:00:00 GMT 200323」と表示されます。誰もがこれを解決するか、atleastで解析例外をスローするための解決策を提案できますか?私はさらに解析する前にformatter.setLenient(false)を試しましたが、何の効果も見せませんでした。どんな助けもありがとうございます。前もって感謝します。

+0

文字列の最初の4文字を渡すだけではどうですか?または、長さが4より大きい場合、java.text.ParseException()をスローします。 –

+1

'200323'は有効な年です。 4桁を超える文字列を切り捨てることができます。 –

+0

私はこの問題が、今年の「フォーマッタ」の数字を作り出していると思います。あなたは、あなたの場合、「有効な年」のために何を渡すべきかを知るという問題に取り組まなければなりません。これを破る可能性のあるケース(無効年ストリング)は何ですか?それからあなたはそれらをきれいにして、それらをフォーマットして渡すことができます –

答えて

1

あなたは友人

Javaの日付範囲が

スタートである日付の範囲はあなたが間違っているよりも、9999件までです意味:Sat Jan 01 00:00:00 PST 1

終了:Wed Apr 17 21:34:08 PST 292269054

そうすることができますそれを処理しません。

関連する問題