我有一些存储值的变量
int day = Calender.SATURDAY;
int hour = 18;
int minutes = 33;
如何将其转换为日期? 如何找到与当前日期时间相差的毫秒数?
情况:
如果当前日期,时间已过去, 例如:如果当前日期是星期六,现在时间是19:00,则获取下一周的日期时间间隔。
如果当前日期是星期六,现在时间是18:30, (时间间隔应为180000毫秒= 3分钟)。
如何在android中做到这一点? 请帮助我找到适合该问题的解决方案。
答案 0 :(得分:0)
创建日历(Calendar.getInstance()
,设置字段(cal.set(Calendar.DAY, day)
等),然后在其上调用getTime()
-这将返回Date
。
答案 1 :(得分:0)
为获得适当的解决方案,我强烈建议使用java.time
提供的现代功能,而不要使用不推荐使用的java.util
。阅读this post和Convert java.util.Date to what “java.time” type?以了解该软件包。此处介绍了如何在android pre API 26上获取java.time
:How 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
}
}
不幸的是,我不太了解这两种情况的发生时间,但是我敢肯定,您可以从这里开始。