質問: timezone idのjava java timezone ..で奇妙な問題が発生しています。timezone.getdefault()を呼び出すと、idが「gmt + 02:00」のローカルタイムゾーンが得られます。面白いことに、このidはtimezone.getavailableids()によって提供されるリストに表示されません。どうやら私のゾーンは「etc/gmt + 2」のように見えます。コンボにタイムゾーンを設定しようとしていますが、gmt + 02:00がリストにないため選択することはできません。何か案は?更新:一番下の行は-id文字列に依存することはできません。ディスプレイidはシステムによって異なるため、オフセットを使用する必要があります。
回答: gmt + 02:00はカスタムidであり、timezone.getavailableids()(これは巨大です)の出力には表示されません。できることは、最初にオフセットを指定してから、指定されたオフセットの使用可能なidを取得するようユーザーに求めることです。たとえば、gmt + 02:00の場合、次のコード部分:for (string string : timezone.getavailableids(timezone.gettimezone( "gmt+02:00").getrawoffset())) { system.out.println(string); } 次の出力が得られます。 art アフリカ/ブランタイア アフリカ/ブジュンブラ アフリカ/カイロ アフリカ/ガボローネ アフリカ/ハラレ アフリカ/ヨハネスブルグ アフリカ/キガリ アフリカ/ルブンバシ アフリカ/ルサカ アフリカ/マプト アフリカ/マセル アフリカ/mbabane africa/tripoli asia/amman asia/beirut asia/damascus asia/gaza asia/istanbul アジア/エルサレム アジア/ニコシア アジア/テルアビブ cat eet エジプト etc/gmt -2 ヨーロッパ/アテネ ヨーロッパ/ブカレスト ヨーロッパ/チシナウ ヨーロッパ/ヘルシンキ ヨーロッパ/イスタンブール ヨーロッパ/カリーニングラード europe/kiev europe/mariehamn europe/minsk europe/nicosia europe/riga europe/simferopol ヨーロッパ/ソフィア ヨーロッパ/タリン ヨーロッパ/ティラスポリ ヨーロッパ/ウジゴロド ヨーロッパ/ビリニュス ヨーロッパ/ザポロージエ イスラエル リビア トルコ まだ大きいですが、今回は人間が閲覧できます。