2012-02-27 58 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