这种硬编码GMT+2
就像一个魅力。
calendarCurrent.setTimeZone(TimeZone.getTimeZone("GTM+2"));
当然我不需要硬编码,所以我使用
calendarCurrent.setTimeZone(TimeZone.getDefault());
但这从来没有给我适当的价值。难道我做错了什么?
这种硬编码GMT+2
就像一个魅力。
calendarCurrent.setTimeZone(TimeZone.getTimeZone("GTM+2"));
当然我不需要硬编码,所以我使用
calendarCurrent.setTimeZone(TimeZone.getDefault());
但这从来没有给我适当的价值。难道我做错了什么?
我猜它应该自动工作。
但我看到人们使用setDefault(..)
TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"));
系统会自动检测默认时区,因此您无需显式调用 TimeZone.setDefault()。
时区自动检测在模拟器上不起作用,但您可以使用 -timezone 启动标志来设置它。
此外,更改时区的推荐方法是通过设置应用程序,该应用程序不包含在当前 sdk 中。现在您可以使用以下内容:
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm.setTimeZone(timezone);
它适用于
<uses-permission android:name="android.permission.SET_TIME_ZONE"/>