2012-03-07 68 views
0

我尝试使用下面的代码从本地日历中的时区获得时区,但我得到的时区拥有,而不是仅仅“IST”如何从日历

Calendar calendarLocal = Calendar.getInstance(); 
       // fetches time zone 
       TimeZone timeZone = calendarLocal.getTimeZone(); 
       System.out.println("Time Zone getAvailableIDs() --->"+timeZone.getAvailableIDs()); 
       String[] x=timeZone.getAvailableIDs(); 
       for(int i=0;i<x.length;i++){ 
        System.out.println("Time Zone IDs-->"+x[i]); 
       } 
        System.out.println("Time Zone ID--->"+timeZone.getID()); 
       System.out.println(" Calender Default-------->>>"+timeZone.getDefault()); 
       System.out.println("Time Zone --->"+timeZone.getTimeZone(timeZone.getID())); 

这里的时区亚洲/加尔各答亚洲/加尔各答我需要它打印IST

回答

0

黑莓Java不会给你时区短码,至少不可靠(只有知道“GMT”代码)。有关如何编码“亚洲/加尔各答”和“IST”等字符串之间的映射的信息,请参阅see my answer here。 (我的方法mapTimeZoneCodes()在这个例子)

我为建立映射一个模板方法,并链接到this article on Desktop Java,这似乎有足够的时间区码的一个非常完整列表,以及如何将代码映射到长的Java时区字符串。

会很无聊的工作字符串复制到我的模板,但一旦你拥有了它,你就可以轻松地查找基于长名称的短代码:

String longName = timeZone.toString(); 
String shortCode = (String)_timeZones.get(longName);