[英]Java: Convert “Europe/London” to 3 digit timezone
如何將時區標識符轉換為相應的3位數字符串? 例如“Europe / London”=>“GMT”
請參閱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,
您可以使用以下代碼查找任何時區的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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.