日历没有返回正确的时间
Calendar not returning the correct time
我想从时间选择器中选择一个时间,并使用 AlarmManager 为该时间设置一个闹钟。
当我使用 when.getTimeInMillis
时,返回的值与我设置的时间不同。
例如,如果我将时间设置为 20:40 并打印 when.getTime
的值,我将从第二天开始得到 17:12。
为什么会这样?
从时间选择器获取时间
MedicationReminder mr=new MedicationReminder(getApplicationContext());
int hour = tp.getCurrentHour();
int min = tp.getCurrentMinute();
Calendar c=Calendar.getInstance();
c.add(Calendar.HOUR, hour);
c.add(Calendar.MINUTE, min);
mr.setReminder(new Medication(name,quant_aux,time),c);
设置闹钟
Intent i = new Intent(mContext, MedicationReceiver.class);
i.putExtra("medName",medication.getName());
i.putExtra("medQuant",medication.getQuantity());
PendingIntent pi=PendingIntent.getBroadcast(mContext,0,i,0);
mAlarmManager.set(AlarmManager.RTC_WAKEUP,when.getTimeInMillis(),pi);
而不是
Calendar c=Calendar.getInstance();
c.add(Calendar.HOUR, hour);
c.add(Calendar.MINUTE, min);
试试
Calendar c=Calendar.getInstance();
c.set(Calendar.HOUR, hour);
c.set(Calendar.MINUTE, min);
如果要使用 24 小时格式,则使用
c.set(Calendar.HOUR_OF_DAY, hour);
我不是 100% 是问题所在,因为您没有包含所有代码,但我认为您将当前时间增加了 20 小时,而不是将日历设置为 20 小时。
另一个注意事项:我认为 getCurrentHour() 和 getCurrentMinute() 自 API 23 以来已被弃用,因此我建议您改用 getHour() 和 getMinute()。
我想从时间选择器中选择一个时间,并使用 AlarmManager 为该时间设置一个闹钟。
当我使用 when.getTimeInMillis
时,返回的值与我设置的时间不同。
例如,如果我将时间设置为 20:40 并打印 when.getTime
的值,我将从第二天开始得到 17:12。
为什么会这样?
从时间选择器获取时间
MedicationReminder mr=new MedicationReminder(getApplicationContext());
int hour = tp.getCurrentHour();
int min = tp.getCurrentMinute();
Calendar c=Calendar.getInstance();
c.add(Calendar.HOUR, hour);
c.add(Calendar.MINUTE, min);
mr.setReminder(new Medication(name,quant_aux,time),c);
设置闹钟
Intent i = new Intent(mContext, MedicationReceiver.class);
i.putExtra("medName",medication.getName());
i.putExtra("medQuant",medication.getQuantity());
PendingIntent pi=PendingIntent.getBroadcast(mContext,0,i,0);
mAlarmManager.set(AlarmManager.RTC_WAKEUP,when.getTimeInMillis(),pi);
而不是
Calendar c=Calendar.getInstance();
c.add(Calendar.HOUR, hour);
c.add(Calendar.MINUTE, min);
试试
Calendar c=Calendar.getInstance();
c.set(Calendar.HOUR, hour);
c.set(Calendar.MINUTE, min);
如果要使用 24 小时格式,则使用
c.set(Calendar.HOUR_OF_DAY, hour);
我不是 100% 是问题所在,因为您没有包含所有代码,但我认为您将当前时间增加了 20 小时,而不是将日历设置为 20 小时。
另一个注意事项:我认为 getCurrentHour() 和 getCurrentMinute() 自 API 23 以来已被弃用,因此我建议您改用 getHour() 和 getMinute()。