在android中只获得毫秒的时间

San*_*air 0 android

我想检查当前时间是否是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);
Run Code Online (Sandbox Code Playgroud)

当我这样做时:今天的毫秒:它显示1458066660000,明天它是:1458153060000

那么如何检查当前时间是否为00:01 AM?

如何比较当前时间与给定时间的简单方法..?

谢谢!

Jon*_*eet 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);
Run Code Online (Sandbox Code Playgroud)

要获得当前时间,您可以使用:

cal.setTimeInMillis(System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)

...然后执行相同的计算.

所有这些当然都对日历的时区敏感,所以要确保它是合适的.

正如评论中所述,如果你只想找到它是00:01,你只需要找到一天中的一分钟:

int minuteOfDay = 
    TimeUnit.HOURS.toMinutes(cal.get(Calendar.HOUR_OF_DAY)) +
    cal.get(Calendar.MINUTE);
Run Code Online (Sandbox Code Playgroud)

或者只是检查这两个字段是否相等:

if (cal.get(Calendar.HOUR_OF_DAY) == 0 &&
    cal.get(Calendar.MINUTE) == 1)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是如果这是一个警报,你可能最好还是计算下一次出现并存储它,然后检查是否已经过了那个时间.如果没有更多的背景,很难确切地知道建议什么,但希望这给了你足够的工具来自己完成剩下的工作......