2017-03-16 29 views
0

过去几天一直是一场噩梦,我甚至考虑卸载然后重新安装Android Studio,以查看我的构建是否是问题。Android设备时区在rawOffset为0的情况下总是错误地返回GMT(00:00)

我正在做的应用程序需要图片中的时间戳,并且时间戳也必须显示时区。 我想平时

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

方法和所有的Android设备的测试我有,所有正在返回GMT 00:00。我花了2天试图找出为什么所有stackOveflow示例不工作,并认为它必须是我的构建,因为即使更改设备上的时区仍然导致GMT时间返回。 在我卸载之前,我遇到了解决方案。

回答

0

解决方案。我找到的答案是针对另一个问题,但它对我有用。 首先将时区设置为空,然后选取正确的设备时区。 但如果在模拟器上,时区将保持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(); 

我希望这可以节省某些人的头发拉。