8

joda-time-2.0バージョンライブラリを使用して、この関数のどちらがISO日付(想定されるXML形式)から構築するのが良いのxs:dateTimeか疑問に思いました:new DateTime(String)DateTime.parse(String)

どちらも同じ値から異なる結果を返すためです。例:

new DateTime("2012-08-16T07:22:05Z")
DateTime.parse("2012-08-16T07:22:05Z")

ISOChronologyのために結果が異なります。ミリ秒は同じですが、最初はis ISOChronology[Europe/Paris]、2番目はです。ISOChronology[UTC]

また、ここでは、を使用することをお勧めしますISODateTimeFormat.dateTimeNoMillis()。これにより、最初のバージョン()を使用した場合と同じ結果が得られnewます。

4

1 に答える 1

14

2つのメソッドは2つの異なる変換メソッドを使用します。コンストラクターはInstantConverterのインスタンスを使用しますこれは、文字列の場合はStringConverterあり、渡された文字列からのタイムゾーンの読み取りをまだサポートしていません。タイムゾーンを解析します。parse

理論的にはどちらの形式もISO日時形式を受け入れますが、コンストラクターは文字列で指定されたものではなく常にシステムのタイムゾーンを使用するため、バグがあると思います。これは、このコンストラクターによって受け入れられる他の可能な値と一致していません。これらの値は、タイムゾーンオフセットのある時系列を考慮に入れています。たとえば、このコンストラクターはDateTimeUTCタイムゾーンのオブジェクトを返します。

new DateTime(DateTime.parse("2012-08-16T07:22:05Z"))
于 2012-08-30T19:01:19.463 に答える