Android 设备时区不正确 returns GMT (00:00) 始终带有 rawOffset 0
Android Devices Timezone Incorrectly returns GMT (00:00) always with rawOffset of 0
过去几天就像一场噩梦,我什至考虑卸载然后重新安装 Android Studio 只是为了看看我的构建是否是问题所在。
我正在做的一个应用程序需要图片中的时间戳,并且时间戳也必须显示时区。
我尝试了通常的
Calendar now = Calendar.getInstance();
TimeZone timeZone = now.getTimeZone();
方法和我拥有的所有 android 测试设备,都返回 GMT 00:00。我花了 2 天时间试图找出为什么所有 stackOveflow 示例都不起作用,并认为这一定是我的构建,因为即使更改设备上的时区仍然会导致 GMT 时间返回。
在我卸载之前,我遇到了解决方案。
解决方案。我找到的答案针对的是另一个问题,但它对我有用。
首先将时区设置为 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();
我希望这可以节省几天拉头发的时间。
过去几天就像一场噩梦,我什至考虑卸载然后重新安装 Android Studio 只是为了看看我的构建是否是问题所在。
我正在做的一个应用程序需要图片中的时间戳,并且时间戳也必须显示时区。 我尝试了通常的
Calendar now = Calendar.getInstance();
TimeZone timeZone = now.getTimeZone();
方法和我拥有的所有 android 测试设备,都返回 GMT 00:00。我花了 2 天时间试图找出为什么所有 stackOveflow 示例都不起作用,并认为这一定是我的构建,因为即使更改设备上的时区仍然会导致 GMT 时间返回。 在我卸载之前,我遇到了解决方案。
解决方案。我找到的答案针对的是另一个问题,但它对我有用。 首先将时区设置为 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();
我希望这可以节省几天拉头发的时间。