【发布时间】:2014-03-05 23:45:24
【问题描述】:
我需要的是特定时区(“俄罗斯/莫斯科”)与用户本地时间之间的时差,差异应该以小时为单位。
我遇到了时区差异有时被错误计算的问题。我计算 android 设备的本地偏移量到 UTC 和远程偏移量到 UTC 之间的差异(以小时为单位)。对于大多数用户来说这很好..但是很多用户都在抱怨这个问题..我无法在我的手机或模拟器上重现它。 “错误”显示的时差在所有方面都少了 1 小时。 在莫斯科是 15:00,在欧洲是 12:00。但用户看到 2 小时的偏移量 这是我的代码。
String tz="Europe/Moscow"
Calendar mCalendar = new GregorianCalendar();
mCalendar.setTimeZone( TimeZone.getTimeZone(tz));
TimeZone mTimeZone = mCalendar.getTimeZone();
int remote = mTimeZone.getRawOffset()/1000/60/60;
Calendar mCalendar2 = new GregorianCalendar();
TimeZone mTimeZone2 = mCalendar2.getTimeZone();
int local = mTimeZone2.getRawOffset()/1000/60/60;
return local - remote;
【问题讨论】:
-
由于“夏令时”/“夏令时”,您的时钟是否每年向前/向后移动两次?在做减法之前看看你得到的数字。
-
我不知道..因为它不会发生在我身上。通过我的电话一切正常。这些是来自用户的错误报告.. :(
-
莫斯科目前比伦敦快 4 小时,尽管在夏季它会提前 3 小时,因为英国在春季将时钟提前一个小时。其他国家也会这样做。你考虑到这一点了吗?抱怨的用户和不抱怨的用户之间是否存在某种模式?看看这些国家的时间,看看他们是否改变时钟。