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



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

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

这是getID():的描述

返回此时区的ID,例如美洲/洛杉矶、GMT-08:00或UTC。

问题是,我需要将其作为Integer,如+3,-5…

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

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;
}

使用TimeZone.getOffset。请注意,时差可能会因夏令时而变化,并且可能因国家和地区而异。因此,您不应全年依赖该抵消数字。相反,使用时区标识符更可靠。

相关内容

  • 没有找到相关文章

最新更新