我想检查当前时间是否是00:01 AM然后做一个特定的工作,我正在尝试将时间转换为毫秒,当我这样做时,我得到不同日期的不同毫秒值。
我试过了:
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(getResources().getString(R.string.zerozero)));
cal.set(Calendar.MINUTE, Integer.parseInt(getResources().getString(R.string.one)));
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
long alarmtime = cal.getTimeInMillis();
long currenttime = System.currentTimeMillis();
Log.e("Value", "= " + alarmtime + " " + currenttime);
当我执行上述操作时:今天的毫秒数:显示 1458066660000 ,明天则为: 1458153060000
那么如何检查当前时间是否为00:01 AM?
如何将当前时间与给定时间进行比较的简便方法..?
谢谢!
答案 0 :(得分:7)
我不相信那里的日历字段是"毫秒",但您可以使用:
long millisecondOfDay =
TimeUnit.HOURS.toMillis(cal.get(Calendar.HOUR_OF_DAY)) +
TimeUnit.MINUTES.toMillis(cal.get(Calendar.MINUTE)) +
TimeUnit.SECONDS.toMillis(cal.get(Calendar.SECOND)) +
cal.get(Calendar.MILLISECOND);
要获取当前时间,您可以使用:
cal.setTimeInMillis(System.currentTimeMillis());
...然后执行相同的计算。
所有这些当然对日历的时区敏感,所以请确保它是合适的。
如评论中所述,如果您只是想查找它是否为00:01,您只需找到当天的分钟:
int minuteOfDay =
TimeUnit.HOURS.toMinutes(cal.get(Calendar.HOUR_OF_DAY)) +
cal.get(Calendar.MINUTE);
或者只是检查这两个字段是否相等:
if (cal.get(Calendar.HOUR_OF_DAY) == 0 &&
cal.get(Calendar.MINUTE) == 1)
{
...
}
但是,如果这是一个警报,你可能最好不要计算下一次出现并存储它,然后检查是否已经过了那个时间。如果没有更多的背景,很难知道确切地建议什么,但希望这给了你足够的工具来自己做其余的工作......
答案 1 :(得分:2)
由于日历日正在变化,您无法使用getTimeInMillis()进行比较。相反,你最好比较小时和分钟字段(如果需要,你也可以做第二和毫秒)。
这样的事情:
Calendar alarmCalendar = Calendar.getInstance();
alarmCalendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(getResources().getString(R.string.zerozero)));
alarmCalendar.set(Calendar.MINUTE, Integer.parseInt(getResources().getString(R.string.one)));
alarmCalendar.set(Calendar.SECOND, 0);
alarmCalendar.set(Calendar.MILLISECOND, 0);
Calendar nowCalendar = Calendar.getInstance();
if(alarmCalendar.get(Calendar.HOUR_OF_DAY) == nowCalendar.get(Calendar.HOUR_OF_DAY)
&& alarmCalendar.get(Calendar.MINUTE) == nowCalendar.get(Calendar.MINUTE))
{
//Do something
}