我正在设置闹钟响起的日历日期。闹钟时间设置了小时、分钟、格式和日期。我也想捕获现在的时间,比较一下差异。因此,如果闹钟时间设置在星期三,现在时间是星期四,我想知道星期四到星期三之间有多少天。我还需要几小时和几分钟。
我已经尝试了每个示例,但似乎没有任何效果。
JAVA方法
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 小时。
如何获取当前时间与我设置的闹钟时间之间的差异?
最佳答案
我认为您的代码“可能”存在问题的几件事是:
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)
这将为您提供任意两次时间之间的差异(以毫秒为单位)。
关于java - 获取两个日历之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47935665/