如何从天,小时和分钟获取时间间隔

时间:2018-10-20 14:53:10

标签: java android

我有一些存储值的变量

int day = Calender.SATURDAY;
int hour = 18;
int minutes = 33;

如何将其转换为日期? 如何找到与当前日期时间相差的毫秒数?

情况:

  1. 如果当前日期,时间已过去, 例如:如果当前日期是星期六,现在时间是19:00,则获取下一周的日期时间间隔。

  2. 如果当前日期是星期六,现在时间是18:30, (时间间隔应为180000毫秒= 3分钟)。

如何在android中做到这一点? 请帮助我找到适合该问题的解决方案。

2 个答案:

答案 0 :(得分:0)

创建日历(Calendar.getInstance(),设置字段(cal.set(Calendar.DAY, day)等),然后在其上调用getTime()-这将返回Date

答案 1 :(得分:0)

为获得适当的解决方案,我强烈建议使用java.time提供的现代功能,而不要使用不推荐使用的java.util。阅读this postConvert java.util.Date to what “java.time” type?以了解该软件包。此处介绍了如何在android pre API 26上获取java.timeHow to use ThreeTenABP in Android Project

如果您已阅读这些内容,则可以按照以下示例的方法解决问题:

public void dateStuff() {
    int day = DayOfWeek.SATURDAY.getValue();
    int hour = 18;
    int minutes = 33;
    LocalDateTime now = LocalDateTime.now();

    int dayDifference = now.getDayOfWeek().getValue() - day;
    LocalDateTime date = LocalDateTime.of(now.getYear(), now.getMonth(), now.getDayOfMonth() - dayDifference, hour, minutes);

    long timeDifferenceNano = Duration.between(now, date).getNano();
    long timeDifference = TimeUnit.NANOSECONDS.toMillis(timeDifferenceNano);
    if (timeDifference > TimeUnit.MINUTES.toMillis(3)) {
        //do stuff
    }
}

不幸的是,我不太了解这两种情况的发生时间,但是我敢肯定,您可以从这里开始。