安卓开发 : Current Time range check

标签 android

我正在开发一个 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/

相关文章:

Android:如何以编程方式显示位置源设置?

java - ListView 未初始化

java - Android Studio项目级build.gradle错误

android - string.xml android 的字符串数组

android - 关于 Android 中的处理程序的问题

android - ActionBar 中的 ProgressBar,例如带有 Refresh 的 GMail 应用程序

android - 使用 ValueAnimator 在 LinearLayout 权重上同时运行动画

android - 如何通过在 Raspberry Pi 3 B 上使用 python 3 查找 android 手机 ip

java - Android第三方应用服务器

android - 如何在以编程方式添加到 LinearLayout 的按钮之间添加边距空间?