我需要将移动时区与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 一样得到它......
您应该能够根据 TimeZonegetOffset()
值计算差异,请参阅http://developer.android.com/reference/java/util/TimeZone.html#getOffset(long )
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。请注意,时差可能会因夏令时而发生变化,并且每个国家和一年中的每一天都会有很大差异。因此,您不应全年依赖该偏移量。相反,使用 TimeZone 标识符更可靠。