0

「EDT」や「+0330」などのタイムゾーン文字列表現から(joda)DateTimeZoneオブジェクトを作成する方法はありますか?

4

3 に答える 3

5

jodatimeは3文字のタイムゾーン識別子(「UTC」を除く)をサポートしていませんが、サポートしていることを指摘する価値があるかもしれませんjava.util.TimeZone次のメソッドを使用して、DateTimeZoneからインスタンスを作成できます。TimeZoneDateTimeZone.forTimeZone

DateTimeZone.forTimeZone(TimeZone.getTimeZone("..."))

ただし TimeZone、「EDT」もサポートしていません。Javadocから:

JDK 1.1.xとの互換性のために、他の3文字のタイムゾーンID( "PST"、 "CTT"、 "AST"など)もサポートされています。ただし、それらの使用は非推奨です...

「いくつか」に注意してください。これを書いている時点では、PDTはTimeZone.getAvailableIDs()(少なくともideone.comでは)リストされていません。ここで「PDT」を使用しようとすると、GMTタイムゾーンになります。

[TimeZone.getTimeZone戻り値]指定されたTimeZone、または指定されたIDが理解できない場合はGMTゾーン。

したがって、サポートされているタイムゾーン識別子に対してのみ使用を試みることが保証されない限り、このアプローチは避けるのが最善です。

于 2017-01-11T08:00:05.540 に答える
1

このコードを使用して、DateTimeZoneオブジェクトを取得できます-

//User Defined
        DateTimeZone dtz = DateTimeZone.forID("America/New_York");
        //System Default TimeZone
        DateTimeZone dtzz = DateTimeZone.forID(TimeZone.getDefault().getID());
于 2013-03-25T11:29:37.580 に答える
1

Joda APIは、短縮されたタイムゾーン名(「EDT」など)のマッピングをサポートしていません。

なんで?

あいまいだから!たとえば、EDTはUTC-4またはUTC+11のいずれかを意味します。

したがって、マッピングを実装する場合は、名前をどのようにマッピングするかを決定してから、自分でマップを作成してデータを設定する必要があります。

出典: http ://www.timeanddate.com/library/abbreviations/timezones/

于 2013-03-25T14:04:42.093 に答える