在Android中,我们通过设置直到它以毫秒为单位的时间来设置闹钟。是否有一种简单的方法可以找到一定时间(hh:mm)之前有多少毫秒,或者我只需要以数学方式计算它?
谢谢!
答案 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
如果有帮助,请告诉我。