Android设备时区在rawOffset为0的情况下总是错误地返回GMT(00:00)
问题描述:
过去几天一直是一场噩梦,我甚至考虑卸载然后重新安装Android Studio,以查看我的构建是否是问题。Android设备时区在rawOffset为0的情况下总是错误地返回GMT(00:00)
我正在做的应用程序需要图片中的时间戳,并且时间戳也必须显示时区。 我想平时
Calendar now = Calendar.getInstance();
TimeZone timeZone = now.getTimeZone();
方法和所有的Android设备的测试我有,所有正在返回GMT 00:00。我花了2天试图找出为什么所有stackOveflow示例不工作,并认为它必须是我的构建,因为即使更改设备上的时区仍然导致GMT时间返回。 在我卸载之前,我遇到了解决方案。
答
解决方案。我找到的答案是针对另一个问题,但它对我有用。 首先将时区设置为空,然后选取正确的设备时区。 但如果在模拟器上,时区将保持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();
我希望这可以节省某些人的头发拉。