我正在开发一个Android应用程序,作为我尝试学习android编程的一部分,它将根据日期和时间(由用户提供)切换音频配置文件...到目前为止,我已经获得了大部分布局完成后,我还创建了一个将在后台运行的服务,以执行一些检查......
现在我很难找到一种优雅的方法来处理检查当前时间是否落在用户保存的时间范围内...我正在以字符串格式保存用户对时间范围的偏好机器人TimerPicker控件,我需要检查当前时间是否落在用户节省的时间......
现在我有以下代码:
'from time'进入以下内容:小时:分钟:上午/下午 - 8:59:AM字符串格式
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());
完成所有这些处理后:
formattedDate1 is returning: 08:59 AM
formattedDate2 is returning: 04:59 AM
有什么建议吗?
由于
答案 0 :(得分:1)
查看日历文档,“不一致信息”部分
http://developer.android.com/reference/java/util/Calendar.html
你打电话:
to.set(rightNow.get(rightNow.YEAR), rightNow.get(rightNow.MONTH), dayOfWeek, toHour, toMinute);
哪个发送到HOUR_OF_DAY(24h),而不是HOUR(12h)。
它表示当您向其提供不一致的信息时,它只使用最新信息。你告诉它,24小时内4小时,这与你的PM设置不一致,所以它会抛弃PM设置。
最简单的更改可能只是将12添加到toHour而不是设置AM_PM。或者,不要使用set(年,月,日,小时,分钟)命令,只需单独设置hour和am_pm。