2016年土耳其政府决定保留GMT + 3时区以挽救日光,但在Android上:
Calendar calendar = Calendar.getInstance();
TimeZone tz = TimeZone.getTimeZone("UTC");
calendar.setTimeInMillis(timestamp * 1000);
Date currentTimeZone = (Date) calendar.getTime();
calendar.add(Calendar.MILLISECOND, tz.getOffset(calendar.getTimeInMillis()));
所以问题是;
它在11月之前的日期显示GMT + 3:
周三10月26日18:00:00 GMT + 03:00 2016
但是在11月之后:
Mon Nov 07 20:00:00 GMT + 02:00 2016
它应该全年保持GMT + 3,对于TimeZone的android lib来说是一个特殊问题还是我做错了什么?
谢谢,
更新
虽然我已经添加了时区和gmt参数的检查,但是
对于使用土耳其时区的Android设备,情况会有点混乱,因为10月29日之后设备的小时将比正常时间提前一小时,直到Android发布更新并且用户应用它。
答案 0 :(得分:5)
有关版本2016g的信息,请参阅release note of tzdb-database:
发布2016g - 2016-09-13 08:56:38 -0700
对未来时间戳的更改
Turkey switched from EET/EEST (+02/+03) to permanent +03, effective 2016-09-07. (Thanks to Burak AYDIN.) Use "+03" rather than an invented abbreviation for the new time.
显然,您的Android设备仍然使用过时的时区版本。实际上,您有以下选项可以继续:
TimeZone.getTimeZone("GMT+03")