计算Android闹钟时间



在Android中,我们通过设置闹钟响起的时间(以毫秒为单位)来设置闹钟。是否有一种简单的方法可以找到距离某个时间(hh:mm)还有多少毫秒,或者我必须用数学方法计算它?

谢谢!

以毫秒为单位保存当前时间

Calandar calendar = Calendar.getInstance();
Long currenttime =  calendar.getTimeInMillis();
Long settime= <your set time in milliseconds>;

在这里你可以计算如下差异:

Long differencetime = settime -  currenttime;
int dif=(int)differencetime/1000;

这里可以设置日历中的时间:

calendar.set(Calendar.SECOND, calendar.get(Calendar.SECOND) + dif);

在这里你可以设置闹钟的设置时间。

AlarmManager alarmManager1 = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager1.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi1);

查看AlarmManager.set()的第一个参数:使用RTC/RTC_WAKEUP,您可以指定固定时间而不是经过的时间。

也就是说,如果您需要使用经过的时间,那么计算需要经过的毫秒数是非常简单的。最坏的情况下,您可以使用Calendar和/或Date类。

Date now = new Date(), b = new Date(年、月、日、时、分);

b.getTime() - a.getTime();

下面是另一种获取时间(以毫秒为单位)的方法:

Calendar c = Calendar.getInstance();
c.set(c.YEAR, c.MONTH, c.DAY_OF_MONTH, 17, 1, 0); // 5:01 pm
long alarmTime = c.getTimeInMillis();
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmNotification.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, alarmTime, 1000 * 60 * 60 * 24, pendingIntent); // Millisec * Second * Minute * Hour // Same time every day
  • RTC_WAKEUP允许闹钟在手机处于睡眠状态时仍然激活。如果你想等到用户自己唤醒手机,可以使用RTC。
  • 使用am.set()如果你不想让警报重复

如果有帮助请告诉我

最新更新