2016-06-29 21 views
-2

SimpleDateFormatを使用してStringをDateオブジェクトに解析しようとしています。 以下はこれは例外の下に私を与えている私のコード解析できない日付例外単純な日付形式

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm.sss"); 
Date parsedDate = formatter.parse("2016-06-28T14:10:23.374Z"); 
System.out.println(parsedDate.toString()); 

ある

Exception in thread "main" java.text.ParseException: Unparseable date: "2016-06-28T14:10:23.374Z" 
at java.text.DateFormat.parse(DateFormat.java:368) 
at com.bac.rds.dolphin.test.Main.main(Main.java:60) 

問題の私の理解では、私は自衛隊で使用していますフォーマット文字列がappropriate.Iはあまり馴染みのないですではないかもしれないということですSimpleDateFormatを使用すると、この作業を行うのに役立ちます。

EDIT

は、このフォーマット文字列は、日付オブジェクトに文字列を解析することが可能である

yyyy-MM-dd'T'HH:mm:ss.SSS 

以下のように私の書式文字列を更新しました。しかし、Zをフォーマットストリングの終わりに挿入して、タイムゾーンを指定するときに、ZもそこにDate Stringに含まれています。それは解析例外を与える。以下は

yyyy-MM-dd'T'HH:mm:ss.SSSZ 

なぜ、この動作解析例外をスローフォーマットですか?

+4

見ている - それはZで終わっていないが、値がありません。同様に、あなたのパターンは1時間12時間の書式指定子である 'hh'を使いますが、その値は14という値を持っています。あなたのパターンのすべての部分をチェックするために 'SimpleDateFormat'ドキュメントを読んだことがありますか? –

+0

この文書を見て解析方法を理解してください。 https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html – Riad

+2

また、次のようにミリ秒を解析しようとしています。秒を解析するパターンはありません。 – DanielBarbarian

答えて

0

この

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
Date parsedDate = formatter.parse("2016-06-28T14:10:23.374Z"); 
System.out.println(parsedDate.toString()); 

と出力を試してみて、あなたのパターンで

Tue Jun 28 14:10:23 IST 2016 
+1

分は10分、秒は23分ですが、分は16分、秒は14分です。それは正しいとは思いませんか? –

+0

@ErwinBolwidtあなたはその理由を知っていますか? –

+0

小文字のsは、パターンを2回入れて解析します。大文字のSはミリ秒を解析します。 – DanielBarbarian

関連する問題