日期:2014-05-18  浏览次数:20829 次

关于timezone的问题
windows设置时间的时候有个选timezone的下拉列表,如何知道其在java中对应的timezone的ID是什么呢,先谢谢大家了.

------解决方案--------------------
帮顶
------解决方案--------------------
java.util.TimeZone的
public static String[] getAvailableIDs()获取受支持的所有可用 ID。

方法。


------解决方案--------------------
String getID()
Gets the ID of this time zone.

还有这个,
------解决方案--------------------
String[] s = TimeZone.getAvailableIDs();

可以取到大概400个时区, 其中很多的ID都是重复的. 比较常用的:


String timeZoneKey = "HST,AST,PST,PNT,MST,CST,IET, " +
"EST,PRT,AGT,BET,CNT,CAT,GMT, " +
"ECT,EET,ART,EAT,NET,MET,PLT, " +
"IST,BST,VST,CTT,JST,ACT,AET, " +
"SST,NST ";

String[] timeZoneKeyArray = timeZoneKey.split( ", ");


for(int i = 0; i < timeZoneKeyArray.length; i ++){
String timeZoneId = TimeZone.getTimeZone(timeZoneKeyArray[i]).getID();
String timeZoneName = TimeZone.getTimeZone(timeZoneKeyArray[i]).getDisplayName();
int rawOffset = TimeZone.getTimeZone(timeZoneKeyArray[i]).getRawOffset();
rawOffset = rawOffset/(3600000);
String offsetString = " ";
if(rawOffset > 0){
offsetString = "+ " + rawOffset;
}else{
offsetString = "- " + Math.abs(rawOffset);
}

System.out.println(timeZoneId + " " + "[GMT "+ offsetString + ":00] " +timeZoneName);
}