2015-09-21 5 views
5

クラスjava.time.InstantのインスタンスをStringと変換したいと思います。コロンを使用しないISO_INSTANT DateTimeFormatterのカスタムバリアントを作成する方法はありますか?

java.time.format.DateTimeFormatter.ISO_INSTANTとまったく同じ形式を使用したいのですが、ファイル名とURLでエスケープせずに使用できるように、形式内のコロンは省略されるか点で置き換えられます。

例:2011-12-03T10.15.30.001Z代わり2011-12-03T10の:15:30.001Z ISO_INSTANTため

参照のJavadoc: https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO_INSTANT

+0

ISO_INSTANTはjava.time.format.DateTimeFormatterBuilder.InstantPrinterParserを使用しており、コロンはそこにハードコードされているため、たぶん些細なことではありません。 – Gustave

+3

あなたは常に 'input.replace("。 "、": ");' ...大文字と小文字を区別します。 – assylias

+0

はい、これは実用的ですが、私が今より良いものを見つけるまで、私が今使っている非常に不愉快な解決策です。 – Gustave

答えて

1

あなたは、このような独自のフォーマッタを構築することができ:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH.mm.ss.SSSVV") 

DateTimeFormatterのJavadocリストその意義と可能なすべてのトークン。

+0

ISO_INSTANTは常にUTCを使用し、必要がない場合は小数点以下の秒数がないため、これでは不十分だと思います。 – Gustave

+1

DateTimeFormatter.ofPattern( "yyyy-MM-dd'T'HH.mm.ss.SSSV")throws java.lang.IllegalArgumentException:パターン文字数が2である必要があります。V – Gustave

+2

DateTimeFormatter.ofPattern( "yyyy-MM-dd ' T'HH.mm.ss.SSVV ")。format(Instant.EPOCH)はjava.time.temporal.UnsupportedTemporalTypeExceptionを生成します:サポートされていないフィールド:YearOfEra – Gustave

関連する問題