【问题标题】:How to get UTC offset in seconds in android如何在android中以秒为单位获得UTC偏移量
【发布时间】:2011-11-09 12:27:54
【问题描述】:

我正在尝试在 android 中以秒为单位获取 UTC 偏移量。由于模拟器一直返回 0,我无法判断我是否正确执行此操作。

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

当我在 tz.getOffset 中输入 0 时,这意味着我只想要来自 gmt 的秒数。 让我知道我所做的是否正确。谢谢

【问题讨论】:

    标签: android timezone


    【解决方案1】:

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

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

    模拟器默认为 UTC,尝试检查可用的时区进行测试。您也可以通过时区开关来设置时区,check the documentation 为 -timezone。

    【讨论】:

    • 这实际上并不完整。并非所有时区都是圆形时区,有一些分数时区,例如委内瑞拉的 -4.5。这应该是 float / double 而不是 int。
    • getOffset 为小数时区返回具有足够精度的 int,精确到秒。
    【解决方案2】:

    模拟器的默认时区是 GMT,这意味着您将始终获得 0 的偏移量。 您的代码看起来不错(我没有尝试过)。 尝试将模拟器的时区更改为其他内容并检查您的代码。 看看这个公开的帖子:Link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      相关资源
      最近更新 更多