4

这种硬编码GMT+2就像一个魅力。

calendarCurrent.setTimeZone(TimeZone.getTimeZone("GTM+2"));

当然我不需要硬编码,所以我使用

calendarCurrent.setTimeZone(TimeZone.getDefault());

但这从来没有给我适当的价值。难道我做错了什么?

4

2 回答 2

0

我猜它应该自动工作。

但我看到人们使用setDefault(..)

TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"));
于 2020-09-15T07:47:47.037 回答
-1

系统会自动检测默认时区,因此您无需显式调用 TimeZone.setDefault()。

时区自动检测在模拟器上不起作用,但您可以使用 -timezone 启动标志来设置它。

此外,更改时区的推荐方法是通过设置应用程序,该应用程序不包含在当前 sdk 中。现在您可以使用以下内容:

AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm.setTimeZone(timezone);

它适用于

<uses-permission android:name="android.permission.SET_TIME_ZONE"/>

于 2012-12-04T10:53:16.867 回答