ISO 8601準拠の文字列をjava.util.Dateに変換する
ISO 8601形式の文字列をに変換しようとしていjava.util.Dateます。 yyyy-MM-dd'T'HH:mm:ssZロケールと共に使用した場合、パターンはISO8601に準拠していることがわかりました(サンプルを比較)。 ただし、を使用java.text.SimpleDateFormatすると、正しくフォーマットされたStringを変換できません2010-01-01T12:00:00+01:00。最初に2010-01-01T12:00:00+0100、コロンなしでに変換する必要があります。 したがって、現在のソリューションは SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.GERMANY); String date = "2010-01-01T12:00:00+01:00".replaceAll("\\+0([0-9]){1}\\:00", "+0$100"); System.out.println(ISO8601DATEFORMAT.parse(date)); これは明らかにそれほど良くありません。何か不足していますか、それとももっと良い解決策がありますか? 回答 JuanZeのコメントのおかげで、Joda -Timeマジックが見つかりました。これもここで説明されています。 したがって、解決策は DateTimeFormatter parser2 = ISODateTimeFormat.dateTimeNoMillis(); String jtdate = "2010-01-01T12:00:00+01:00"; System.out.println(parser2.parseDateTime(jtdate)); より簡単には、コンストラクターを介してデフォルトのパーサーを使用します。 DateTime dt = new DateTime( "2010-01-01T12:00:00+01:00" ) ; 私にとって、これは素晴らしいことです。