2012-02-27 66 views
2

我正在研究一個android應用程序,作爲我試圖學習android編程的一部分,它將基於日期和時間(由用戶提供)切換音頻配置文件......迄今爲止我已經完成了大部分的佈局,我還創建了一個服務,將在後臺運行,以執行幾次檢查...Android開發者:當前時間範圍檢查

現在我很難找到一個優雅的方式來處理檢查如果當前時間落在用戶保存的時間範圍內...我從androids TimerPicker控件保存用戶對時間範圍的偏好以字符串格式,我需要檢查當前時間是否落入用戶保存的時間...

現在我有以下翼代碼:

的「從時間」即將與下列:時:分:AM/PM - 8:59:AM以字符串格式

的「到時間」即將與以下操作:小時:分鐘:AM/PM - 4:59:

formattedDate1 is returning: 08:59 AM 

formattedDate2 is returning: 04:59 AM 

任何建議:PM字符串格式

if(fromAMPM.equals("AM")){ 
     from.set(from.AM_PM, from.AM); 
} else { 
     from.set(from.AM_PM, from.PM); 
} 

//dont care about the YEAR and MONTH, so set it to current MONTH and YEAR          
from.set(rightNow.get(rightNow.YEAR), rightNow.get(rightNow.MONTH), dayOfWeek, fromHour, fromMinute);     

if(toAMPM.equals("AM")){ 
     to.set(to.AM_PM, to.AM); 
}else{ 
     to.set(to.AM_PM, to.PM); 
}  

//dont care about the YEAR and MONTH, so set it to current MONTH and YEAR      
to.set(rightNow.get(rightNow.YEAR), rightNow.get(rightNow.MONTH), dayOfWeek, toHour, toMinute); 

//this is just for me to see what got set: 
SimpleDateFormat df3 = new SimpleDateFormat("HH:mm aaa"); 
String formattedDate1 = df3.format(from.getTime()); 
String formattedDate2 = df3.format(to.getTime()); 

所有此處理後?

感謝

回答

1

看看日曆文件,下節 「不一致的信息」

http://developer.android.com/reference/java/util/Calendar.html

您致電:

to.set(rightNow.get(rightNow.YEAR), rightNow.get(rightNow.MONTH), dayOfWeek, toHour, toMinute);

它發送toHour爲HOUR_OF_DAY (24h),而不是HOUR(12h)。

它說,當你提供不一致的信息時,它只是使用最新的信息。你告訴它,24小時的小時是4小時,這與你的PM設置不一致,所以它會拋出PM設置。

最簡單的變化可能只是將12添加到toHour而不是設置AM_PM。或者,不要使用set(year,month,day,hourofday,minute)命令,並分別設置hour和am_pm。

+0

感謝您的意見,我沒有意識到這是它傳遞到設置的24小時...我必須已經讀了幾次日曆頁面...在任何情況下,我只是刪除了to.set並分別設置小時和時間,並使其工作......再次感謝...... – 2012-02-27 20:13:39

相關問題