Установка будильника на 9:00 по Гринвичу

У меня странная проблема. Мне нужно поставить задачу на запуск ровно в 9:00 по Гринвичу. Вот код, который я использую:

AlarmManager mgr = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance(TimeZone
                    .getTimeZone("GMT"));
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.set(Calendar.HOUR, 9);
            calendar.set(Calendar.MINUTE, 0);

            mgr.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi);

Мой часовой пояс GMT+2. В качестве теста я попытался установить будильник в это время:

Alarm time = My time - 2 hours + couple of minutes to catch the alarm

Но это никогда не срабатывало. Я что-то упускаю? Заранее спасибо.


person Egor    schedule 01.03.2012    source источник


Ответы (1)


Это может быть проблемой:

calendar.set(Calendar.HOUR, 9);

Это установка «часа утра или дня» — сделайте, если вы уже во второй половине дня, он установит его на 9 вечера. Я думаю, вы хотите:

calendar.set(Calendar.HOUR_OF_DAY, 9);

Возможно, это не объясняет вашу проблему, но это, безусловно, одна вещь, которую нужно исправить. Обратите внимание, что это будет в тот же день, поэтому, если вы сделаете это после 9 утра, он не сработает.

(Возможно, вам также следует установить поле секунд равным 0.)

person Jon Skeet    schedule 01.03.2012
comment
Я попытался установить HOUR на 13, так как в моем часовом поясе сейчас 15. К сожалению это не работает.. - person Egor; 01.03.2012
comment
@Egor: HOUR не должно быть 13 или 15 - должно быть 1 или 3. HOUR_OF_DAY будет 13 или 15. - person Jon Skeet; 01.03.2012
comment
О, конечно, теперь понял. Спасибо! - person Egor; 01.03.2012