我正在开发一个 android 应用程序,作为我尝试学习 android 编程的一部分,它将根据日期和时间(由用户提供)切换音频配置文件...到目前为止,我已经掌握了大部分布局完成后,我还创建了一个将在后台运行以执行一些检查的服务...
现在我很难找到一种优雅的方法来处理检查当前时间是否落在用户保存的时间范围内......我正在以字符串格式保存用户对时间范围的偏好androids TimerPicker 控件,我需要检查当前时间是否在用户保存的时间范围内...
现在我有以下代码:
'from time' 包含以下内容:hour:minute:AM/PM -- 8:59:AM,字符串格式
'to time' 以字符串格式出现:hour:minute:AM/PM -- 4:59: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());
所有这些处理之后:
formattedDate1 is returning: 08:59 AM
formattedDate2 is returning: 04:59 AM
有什么建议吗?
谢谢
最佳答案
查看“不一致信息”部分下的日历文档
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(24 小时),而不是 HOUR(12 小时)。
它说当你向它提供不一致的信息时,它只使用最新的信息。您告诉它 toHour 在 24 小时制中是 4,这与您的 PM 设置不一致,因此它会丢弃 PM 设置。
最简单的更改可能只是将 12 添加到 toHour 而不是设置 AM_PM。或者,不要使用 set(year, month, day, hourofday, minute) 命令,只需分别设置 hour 和 am_pm。
关于安卓开发 : Current Time range check,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9471118/