与Android中的GMT相比,获得时区

时间:2012-07-16 20:35:21

标签: java android timezone integer

与Android中的 GMT 相比,我需要获得移动 TimeZone 。我只能看到一个函数返回但是String

Calendar c = Calendar.getInstance(); 
TimeZone tz = c.getTimeZone();
tz.getID();

这是getID()

的说明
  

返回此TimeZone的ID,例如America / Los_Angeles,GMT-08:00或UTC。

问题是我需要将Integer视为+ 3,-5 ......

3 个答案:

答案 0 :(得分:4)

您应该能够根据TimeZone getOffset()值计算差异,请参阅http://developer.android.com/reference/java/util/TimeZone.html#getOffset(long

答案 1 :(得分:4)

public static String getCurrentTimezoneOffset() {

    TimeZone tz = TimeZone.getDefault();  
    Calendar cal = GregorianCalendar.getInstance(tz);
    int offsetInMillis = tz.getOffset(cal.getTimeInMillis());

    String offset = String.format("%02d:%02d", Math.abs(offsetInMillis / 3600000), Math.abs((offsetInMillis / 60000) % 60));
    offset = (offsetInMillis >= 0 ? "+" : "-") + offset;

    return offset;
}

答案 2 :(得分:1)

使用TimeZone.getOffset。请注意,由于夏令时,时差可能会发生变化,并且每个国家/地区和一年中的时间可能会有很大差异。因此,您不应该全年依赖该抵消数字。相反,使用TimeZone标识符更可靠。