如何在android中获得UTC偏移量

我正在尝试在android中获取UTC秒数。 由于模拟器一直返回0,我不知道我是否正确地做这件事。

Calendar c=Calendar.getInstance(); TimeZone tz=c.getTimeZone(); int offsetFromUtc=tz.getOffset(0)/1000; 

当我把0放在tz.getOffset中意味着我只想从gmt中获得秒数。 让我知道我在做什么是正确的。 谢谢

Solutions Collecting From Web of "如何在android中获得UTC偏移量"

时区偏移可能在一年中发生变化,也许最常见的原因是夏令时。 TimeZone.getOffset()使用当前时间来获取当前偏移量,而不是将0传递给TimeZone.getOffset(),而是创build一个新的Date并获取其Time值:

 TimeZone tz = TimeZone.getDefault(); Date now = new Date(); int offsetFromUtc = tz.getOffset(now.getTime()) / 1000; 

模拟器默认为UTC,请尝试检查可用的时区以进行testing。 你也可以通过时区开关来设置时区, 查看文件的时区。

模拟器的默认时区是格林尼治标准时间,这意味着你总是会得到0的偏移量。你的代码看起来很好(我没有尝试它)。 尝试改变你的模拟器的时区到别的地方,并检查你的代码。 看看这个开放的post: 链接