我试图在android中获取UTC偏移量。由于模拟器不断返回0,我不知道我是否正确地做到了这一点。如何在秒钟内获取UTC偏移量android
Calendar c=Calendar.getInstance();
TimeZone tz=c.getTimeZone();
int offsetFromUtc=tz.getOffset(0)/1000;
当我把0放在tz.getOffset中,这意味着我只想从gmt中得到秒数。 让我知道我在做什么是正确的。谢谢
我试图在android中获取UTC偏移量。由于模拟器不断返回0,我不知道我是否正确地做到了这一点。如何在秒钟内获取UTC偏移量android
Calendar c=Calendar.getInstance();
TimeZone tz=c.getTimeZone();
int offsetFromUtc=tz.getOffset(0)/1000;
当我把0放在tz.getOffset中,这意味着我只想从gmt中得到秒数。 让我知道我在做什么是正确的。谢谢
时区偏移量可能会在一年中发生变化,也许最常见的原因是夏令时。而不是将0至TimeZone.getOffset()的使用当前时间来得到当前偏移,创建一个新的日期,并得到其时间价值:
TimeZone tz = TimeZone.getDefault();
Date now = new Date();
int offsetFromUtc = tz.getOffset(now.getTime())/1000;
模拟器默认为UTC,尝试检查可用的时区进行测试。您还可以通过时区开关设置时区,check the documentation用于时区。
模拟器的默认时区是格林尼治标准时间,这意味着您将始终得到0的偏移量。 您的代码看起来很好(我没有尝试它)。 尝试将模拟器的时区更改为其他内容并检查您的代码。 看一看这个开放的帖子:Link
我忘了夏令时,感谢您的高举 –
这实际上并不完整。并非所有的时区都是全天候的,委内瑞拉的时区都是小数点,例如-4.5。这应该是一个float/double而不是int。 – Dev2rights
[getOffset](http://developer.android.com/reference/java/util/TimeZone.html#getOffset(long))为分数时区返回int,精度很高,一直到秒。 –