与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。请注意,时差可能会因夏令时而变化,并且可能因国家和地区而异。因此,您不应全年依赖该抵消数字。相反,使用时区标识符更可靠。