2

我需要将移动时区与Android中的GMT进行比较。我只能看到一个函数返回它,但是String

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

这是 的描述getID()

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

问题是我需要Integer像 +3,-5 一样得到它......

4

3 回答 3

4

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

于 2012-07-16T20:39:30.493 回答
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;
}
于 2013-05-21T22:34:48.903 回答
1

使用TimeZone.getOffset。请注意,时差可能会因夏令时而发生变化,并且每个国家和一年中的每一天都会有很大差异。因此,您不应全年依赖该偏移量。相反,使用 TimeZone 标识符更可靠。

于 2012-07-16T20:39:40.390 回答