4

このハードコードGMT+2は魅力のように機能します。

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

もちろん、ハードコードする必要はないので、使用しています

calendarCurrent.setTimeZone(TimeZone.getDefault());

しかし、これは私に適切な価値を与えることは決してありません。私は何か間違ったことをしていますか?

4

2 に答える 2

-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 に答える