计算Android闹钟的时间

时间:2011-09-28 21:53:48

标签: android alarm

在Android中,我们通过设置直到它以毫秒为单位的时间来设置闹钟。是否有一种简单的方法可以找到一定时间(hh:mm)之前有多少毫秒,或者我只需要以数学方式计算它?

谢谢!

4 个答案:

答案 0 :(得分:2)

为单位将当前时间保存为毫秒
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);

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

  

现在日期=新日期(),b =新日期(年,月,日,小时,分钟);

     

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

答案 3 :(得分:0)

这是另一种将时间以毫秒计算到某个时间的方法:

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()

如果有帮助,请告诉我。