2012-05-27 36 views
1

我无法获得特定时区的准确时间,例如一般是GMT-5的“EST”,但现在它遵循夏令时GMT-4。但在java和android都显示1小时差(它只需要格林尼治标准时间-5,而不是格林威治标准时间-4)。但在网络中显示正确。 我的问题与How to tackle daylight savings using Timezone in java 相同但我只能使用TimeZone的简写形式,如(“EST”,“IST”)。请您可以给出一些建议,以获得基于特定简短时区(如“EST”)的准确时间...特定时区的日历不显示夏时制在android和java中

谢谢。

+0

IMO你提到的答案相当清楚 - 你试图实现的是不可能的。 – home

+2

“EST”不遵循夏令时。 “东部时间”确实如此 - 但这就是EST,成为美国东部时间。 EST的“S”是“标准”,即“没有夏令时”。 –

+0

这些3-4字母缩写不是实时区域,不是标准化的,甚至不是唯一的(!)。试图与这些工作将导致痛苦和痛苦;避免它们。通常使用[UTC](https://en.wikipedia.org/wiki/Coordinated_Universal_Time)中的值,并在[适当的时区名称](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)大陆/地区'格式。 –

回答

2

没有完美的答案,因为你基本上得到了不完整的信息。然而,这里的一些代码,找出所有支持的时候,其使用缩写“EST”区(非夏令时,在美国地区):

import java.util.*; 

public class Test { 
    public static void main(String[] args) { 
    for (TimeZone zone : getMatchingTimeZones("EST")) { 
     System.out.println(zone.getID()); 
    } 
    } 

    public static List<TimeZone> getMatchingTimeZones(String target) { 
    List<TimeZone> list = new ArrayList<TimeZone>(); 
    for (String id : TimeZone.getAvailableIDs()) { 
     TimeZone zone = TimeZone.getTimeZone(id); 
     String actual = zone.getDisplayName(false, TimeZone.SHORT, Locale.US); 
     if (actual.equals(target)) { 
     list.add(zone); 
     } 
    } 
    return list; 
    } 
} 

你如何从该列表中得到实际你想要的时区取决于你。 (另外我不知道这是否可以在Android上运行,我还没试过)

相关问题