当前位置: 首页 > 知识库问答 >
问题:

获取两个日历之间的差异

时恩
2023-03-14

我正在设置闹钟的日历日期。闹钟时间设置了小时、分钟、格式和日期。我还想抓住现在的时间,比较两者之间的差异。所以,如果闹钟时间设置为周三,现在时间是周四,我想知道周四到周三之间有多少天。我还需要时间和分钟。

我尝试过每一个例子,但似乎都不管用。

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

如何获取当前时间与我设置的报警时间之间的差异。?

共有1个答案

宋宏毅
2023-03-14

我认为“可能”是您的代码的问题的两件事是:

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)

这将给你之间的任何两个时间在毫里的差异。

 类似资料:
  • 问题内容: 我知道我可以使用momentjs做任何事情,还可以做一些涉及日期的事情。但是令人尴尬的是,我很难去做一件看起来很简单的事情:得到两次之间的差。 例: 我试过的 我不知道那里的“ 10”是什么。我住在巴西,所以如果相关的话,我们是utc-0300。 结果是持续时间正确的内部值: 所以,我想我的问题是:如何将momentjs持续时间转换为时间间隔?我肯定可以用 但我觉得有一些更 优雅 ,我

  • 问题内容: 我可以使用MomentJs获得两个日期之间的差异,如下所示: 但是,我也想在适用时显示小时(仅当> = 60分钟过去时)。 但是,当我尝试使用以下方法检索工时时数: 它返回的是当前时间,而不是两个日期之间的小时数。 如何获得两个时刻之间的小时数差异? 问题答案: 你近了您只需要使用该方法请参阅docs。

  • 返回两个日期之间相差的天数。 计算 Date 对象之间的差异(以天为单位)。 const getDaysDiffBetweenDates = (dateInitial, dateFinal) => (dateFinal - dateInitial) / (1000 * 3600 * 24); getDaysDiffBetweenDates(new Date('2017-12-13'), ne

  • 本文向大家介绍如何获取iOS中两个日期之间的差异?,包括了如何获取iOS中两个日期之间的差异?的使用技巧和注意事项,需要的朋友参考一下 获得两个日期之间的差异很容易。您应该知道如何在两个日期之间玩。 我们将使用DateFormatter类格式化日期。 DateFormatter的实例创建 NSDate对象的字符串表示形式,并将日期和时间的文本表示形式转换为 NSDate对象。 你可以在这里读更多关

  • 问题内容: 我有两个这样的表: 表格1 表2 我想从 Table1中 选择并插入 Table2中 。 例如: 在表1中,我有这个 在表2中,我想要这个 带有样本数据的表结构 问题答案: 感谢您的架构。它使处理您的问题变得容易。我对您的架构进行了一些更改以利用auto_increment 在这里,我在emp_leave_daywise表上添加了唯一约束,因为id整数上的主键不能确保记录不重复。 em

  • 嗯,我在这里发现了很多这样的问题,试图获得年、月和日的两个日期之间的差异。。。但没有满足我要求的答案。 所以我写了一些计算的东西,它似乎是有效的,但也许这里的一些专家可以进行更正,或者帮助使这更简单。