【问题标题】:Android Devices Timezone Incorrectly returns GMT (00:00) always with rawOffset of 0Android 设备时区错误地返回 GMT (00:00) 始终原始偏移为 0
【发布时间】:2017-08-08 05:54:19
【问题描述】:

过去几天一直是噩梦,我什至考虑卸载然后重新安装 Android Studio 只是为了看看我的构建是否是问题。

我正在做的应用程序需要图片中的时间戳,并且时间戳也必须显示时区。 我尝试了通常的

Calendar now = Calendar.getInstance();
TimeZone timeZone = now.getTimeZone();

方法,对于我拥有的所有 android 测试设备,所有设备都返回 GMT 00:00。我花了 2 天时间试图找出为什么所有 stackOveflow 示例都不起作用,并认为这一定是我的构建,因为即使更改设备上的时区仍然会导致 GMT 时间返回。 在我卸载之前,我遇到了解决方案。

【问题讨论】:

    标签: android calendar timezone utc gmt


    【解决方案1】:

    解决方案。我找到的答案是针对另一个问题的,但它对我有用。 首先将 Timezone 设置为 Null,然后选择正确的设备时区。 如果在模拟器上,时区将保持 UTC。

            TimeZone.setDefault(null);
            System.setProperty("user.timezone", "");
            TimeZone.setDefault(null);
    
            //get Calendar instance
            Calendar now = Calendar.getInstance();
    
            //get current TimeZone using getTimeZone method of Calendar class
            TimeZone timeZone = now.getTimeZone();
    
            //display current TimeZone using getDisplayName() method of TimeZone class
            String strTimeZone=timeZone.getDisplayName(false,TimeZone.SHORT);
            long lngTimeZoneOffset= timeZone.getRawOffset();
    

    我希望这可以节省一些人拉头发的时间。

    【讨论】:

      猜你喜欢
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多