2012-03-01 278 views
0

我遇到了一個奇怪的問題。我需要將任務設置爲在格林威治標準時間上午9點準確運行。下面是我使用的代碼:格林尼治標準時間上午9點設置鬧鐘

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 

但它從來沒有奏效。我錯過了什麼嗎?提前致謝。

回答

2

這可能是問題:

calendar.set(Calendar.HOUR, 9); 

這是設置「上午或下午的小時」 - 如果你在下午是已經這樣做,這將其設置爲晚上9點。我想你想:

calendar.set(Calendar.HOUR_OF_DAY, 9); 

這有可能是不解釋你的問題,但它肯定一個是解決事情。請注意,它將在同一天 - 所以如果你在上午9點以後這樣做,它不會觸發。

(你或許應該設置秒字段設置爲0,太。)

+0

我試過設置小時到13,因爲它現在15在我的時區。不幸的是,這是行不通的。 – Egor 2012-03-01 13:34:13

+0

@Egor:小時不應該是13或15 - 應該是1或3. HOUR_OF_DAY應該是13或15. – 2012-03-01 13:36:14

+0

哦,當然,現在就明白了。謝謝! – Egor 2012-03-01 13:39:45

相關問題