2017-03-28 4 views
3

私は現在、日付のカスタムフォーマットを探していて、入手できません。JAVA OffsetDateTimeカスタム1/100秒

OffsetDateTime o = OffsetDateTime.now(); 
String l = o.format(DateTimeFormatter.ISO_DATE_TIME); 

結果は次のとおりです:

2017-03-28T16:23:57.489 + 02:00

は、私は次のコードを使用して"1997-07-16T19:20:30.45+01:00"を取得したいです非常に近いですが、hh:mm:ss.XXで、hh:mm:ss.XXXではありません。

OffsetDateTimeをカスタマイズする方法をご存知ですか?私は良い例を見つけることができません。

+0

私はあなたのコードに間違いはないと思っています。ミリ秒は時々、XXXを取得することもありますが、コードを再度コンパイルするとXXが得られます。ここは私の2017-03-28T19:36:00.45 + 05:00です。 – Omore

答えて

0

同じ問題が発生した場合。

2017-03-28T16:44:48.30 + 02:00

1

Your answer

String ISO_OFFSET_DATE_TIME_WITH_HUNDREDTH_OF_SECOND = "yyyy-MM-dd'T'HH:mm:SS.ssXXX"; 

DateTimeFormatter dateTimeFormatter = 
     DateTimeFormatter.ofPattern(ISO_OFFSET_DATE_TIME_WITH_HUNDREDTH_OF_SECOND); 


String ll = o.format(dateTimeFormatter); 
System.out.println(ll); 

Iは所望の出力を有する:

パターンでと思わほぼです。あなたがDateTimeFormatter javadocで見てみる場合は、小文字s秒の画分に、に対応し、大文字Sていることがわかります:

Symbol Meaning      Presentation  Examples 
------ -------      ------------  ------- 
s  second-of-minute   number   55 
S  fraction-of-second   fraction   978 

だから、あなたのパターンで、sSが反転します。正しいパターンがある:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSXXX"); 
OffsetDateTime o = OffsetDateTime.now(); 
System.out.println(o.format(formatter)); 

出力である:

2017-06-19T20:34:29.75から03:00


PS:注秒の割合は75 - 59より大きく、秒の最大値です(答えでは、と思われます。秒の割合は48なので、それは働いた印象です)。

私の場合のオフセットは、システムのデフォルトのタイムゾーンのために-03:00です。とにかく、ちょうどあなたのパターンを修正し、それは動作するはずです。

関連する問題