获得两个日历之间的差异

时间:2017-12-22 03:58:54

标签: java android

我正在设置闹钟的日历日期。闹钟时间包括小时,分钟,格式和日期。我也想抓住现在的时间并比较差异。因此,如果闹钟时间是在星期三设定的,现在时间是星期四,我想要从星期四到星期三之间的天数。我还需要几小时和几分钟。

我已经尝试过每一个例子,似乎没有任何工作。

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小时。

enter image description here

如何获得当前时间与我设置的闹钟时间的差异。?

1 个答案:

答案 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)

这将为您提供任意两次毫秒之间的差异。

相关问题