5

JodaTimeを使用してJavaアプリケーションでタイムゾーンを操作しています。JavaタイムゾーンのIDからDateTimeZone(JodaTime)オブジェクトを作成しようとすると、問題が発生します。ジョーダは投げます

 java.lang.IllegalArgumentException: The datetime zone id 'SystemV/HST10' is not recognised

タイムゾーンの次のリストについては、次のとおりです。

  • SystemV / HST10
  • SystemV / YST9
  • SystemV / YST9YDT
  • SystemV / PST8
  • SystemV / PST8PDT
  • SystemV / MST7
  • SystemV / MST7MDT
  • SystemV / CST6
  • SystemV / CST6CDT
  • SystemV / EST5
  • SystemV / EST5EDT
  • SystemV / AST4
  • SystemV / AST4ADT

これらのタイムゾーンは何に使用されますか?それらは非プログラマーに関連していますか?一般的な用途向けに設計されたアプリケーションは、これらのタイムゾーンをサポートする必要がありますか?

ありがとう。

4

3 に答える 3

4

SystemVタイムゾーンIDは古く、廃止されています。ただし、 joda-timejarファイルをsystemvタイムゾーンデータファイルを含めて再コンパイルすることで、Joda -Timeにそれらを理解させることができます。systemvデータファイルのコメントアウトされた行を参照してください。(つまり、行のコメントを解除し、jarファイルを再構築します)。

于 2012-05-22T07:48:31.357 に答える
3

これは私の質問への回答を提供するので、新しい投稿として追加します。SystemVタイムゾーンは、UNIX SYSTEMVという名前の古いUNIXOSで使用されていました。私のチームと話し合った結果、プログラマー以外の人にとっても、今日ではプログラマーにとっても重要ではないと判断しました。そのため、アプリケーションでは使用しないことにしました。

SystemVタイムゾーンに関するいくつかの参考資料:

于 2012-05-22T06:52:44.723 に答える
1

メソッドDateTimeZone#forTimeZoneを使用して、JavaTimeZoneをDateTimeZoneに変換するだけです。

TimeZone tz = //...  
DateTimeZone dtz = DateTimeZone.forTimeZone(tz);  

このゾーンの一部は、「 SystemV/」 なしで解析できます。

だからあなたは使うことができます

String tzId = "SystemV/MST7MDT";
DateTimeZone tz = DateTimeZone.forID(tzId.replaceAll("SystemV/", ""));  

また、あなたは次を作ることができます

TimeZone tz = TimeZone.getTimeZone("SystemV/MST7MDT");
DateTimeZone jodaTz = DateTimeZone.forTimeZone(tz);
于 2012-05-21T13:48:05.960 に答える