3


1

Java:「ヨーロッパ/ロンドン」を3桁のタイムゾーンに変換します

タイムゾーン識別子を対応する3桁の文字列に変換するにはどうすればよいですか? たとえば、「ヨーロッパ/ロンドン」⇒「GMT」

2 Answer


2


java.util.TimeZone`の String getDisplayName(boolean daylight、int style) メソッドを参照してください。 スタイルは `TimeZone.LONG`または TimeZone.SHORT`で、短いスタイルはタイムゾーンの短い名前を返します。

'' '' '

もっと長い方法は、 `String [] TimeZone.getAvailableIDs(int offset)`の出力を確認することです。 短いタイムゾーンコードはあいまいまたは冗長である可能性があるため、より徹底的にしたい場合があります。

TimeZone tz = TimeZone.getTimeZone("Europe/London");
for (String s : TimeZone.getAvailableIDs(tz.getOffset(System.currentTimeMillis()))) {
    System.out.print(s + ",");
}

------------------------------------------------------

Africa/Abidjan,Africa/Accra,Africa/Bamako,Africa/Banjul,Africa/Bissau,
Africa/Casablanca,Africa/Conakry,Africa/Dakar,Africa/El_Aaiun,Africa/Freetown,
Africa/Lome,Africa/Monrovia,Africa/Nouakchott,Africa/Ouagadougou,Africa/Sao_Tome,
Africa/Timbuktu,America/Danmarkshavn,Atlantic/Canary,Atlantic/Faeroe,
Atlantic/Faroe,Atlantic/Madeira,Atlantic/Reykjavik,Atlantic/St_Helena,
Eire,Etc/GMT,Etc/GMT+0,Etc/GMT-0,Etc/GMT0,Etc/Greenwich,Etc/UCT,
Etc/UTC,Etc/Universal,Etc/Zulu,Europe/Belfast,
Europe/Dublin,Europe/Guernsey,Europe/Isle_of_Man,Europe/Jersey,Europe/Lisbon,
Europe/London,GB,GB-Eire,GMT,GMT0,Greenwich,Iceland,Portugal,UCT,UTC,
Universal,WET,Zulu,


0


次のコードを使用して、任意のタイムゾーンの3桁の略語を検索できます。

Date date = new Date();

String TimeZoneIds[] = TimeZone.getAvailableIDs();

String timezoneShortName = "";

String timezoneLongName  = "Europe/London";

for (int i = 0; i < TimeZoneIds.length; i++) {
    TimeZone tz = TimeZone.getTimeZone(TimeZoneIds[i]);
    String tzName = tz.getDisplayName(tz.inDaylightTime(date),TimeZone.SHORT);

    if(timezoneLongName.equals(TimeZoneIds[i])){
        timezoneShortName = tzName;
        break;
    }
}
System.out.println(timezoneShortName);