我正在设置闹钟的日历日期。闹钟时间包括小时,分钟,格式和日期。我也想抓住现在的时间并比较差异。因此,如果闹钟时间是在星期三设定的,现在时间是星期四,我想要从星期四到星期三之间的天数。我还需要几小时和几分钟。
我已经尝试过每一个例子,似乎没有任何工作。
JAVA METHOD
private void setAlarm(final int position, int day){
alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);
int amPm = 0 ;
String hourOfDay = mDataset.get(position).getHourOfDay();
String minute = mDataset.get(position).getMinute();
String format = mDataset.get(position).getTimeSet();
if("PM".equalsIgnoreCase(format)){
amPm = 1;
}else{
amPm = 0;
}
Calendar alarmTime = Calendar.getInstance();
alarmTime.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hourOfDay));
alarmTime.set(Calendar.MINUTE, Integer.parseInt(minute));
alarmTime.set(Calendar.AM_PM,amPm);
alarmTime.set(Calendar.DAY_OF_WEEK, day);
Calendar now = Calendar.getInstance();
我确实试过这个。
alarmTime = Calendar.getInstance();
alarmTime.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hourOfDay));
alarmTime.set(Calendar.MINUTE, Integer.parseInt(minute));
alarmTime.set(Calendar.AM_PM,amPm);
alarmTime.set(Calendar.DAY_OF_WEEK, day);
Calendar now = Calendar.getInstance();
long millis1 = now.getTimeInMillis();
long millis2 = alarmTime.getTimeInMillis();
long diff = millis1 - millis2;
long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
long diffHours = diff / (60 * 60 * 1000) % 24;
long diffDays = diff / (24 * 60 * 60 * 1000);
这不太对劲。它说2天所以我假设它是在闹钟日(星期二)到星期四(今天)。我需要的是从今天(星期四)到星期二。这是从现在开始大约5天。小时应该在5个小时左右,但似乎总是12小时。
如何获得当前时间与我设置的闹钟时间的差异。?
答案 0 :(得分:2)
我看到的一些事情可能会'是你的代码的问题是:
alarmTime.set(Calendar.DAY_OF_WEEK, day);
您是从数据集中获取星期几还是每月的某一天?确保它返回星期几或将其更改为DAY_OF_MONTH。
一旦你这样做,你可以做这样的事情
long millis1 = now.getTimeInMillis();
long millis2 = alarmTime.getTimeInMillis();
//Take the absolute difference between the two millis so you don't get a negative valure
long diff = millis1 > millis2 ? (millis1 - millis2) :(millis2 - millis1);
int days = TimeUnit.MILLISECONDS.toDays(diff)
int hours = TimeUnit.MILLISECONDS.toHours(diff)
int minutes = TimeUnit.MILLISECONDS.toMinutes(diff)
这将为您提供任意两次毫秒之间的差异。