我有两个MyDate
个对象。
class MyDate {
public int hours, minutes;
MyDate(int hours, int minutes) {
this.hours = hours;
this.minutes = minutes;
}
}
MyDate startTime;
MyDate endTime;
我有一个时间戳作为第三个MyDate对象。
MyDate currentTime;
我想知道在区间 endDate - startDate
中是否包含currentTimeStamp[------------[startTime]------------[currentTime]-----------------[endTime]--------------]
我看到三种时间组合:
解释第三种情况:
[-----------------(23:59)(00:00 - new Day)--(07:00)----------(23:58)--(00:00 - new Day)]
如何在区间 endDate - startDate 中检查是否包含currentTimeStamp?
答案 0 :(得分:0)
重新发表我的评论,包括解决方案。
要确定时间是否在某个时间间隔内,您需要首先检查日期是在开始时间之后是否在结束时间之前。如果两个条件均为真,则日期在间隔内。创建两个方法,一个用于检查时间是否在另一个时间之前,另一个用于检查时间是否在另一个时间之后,则问题变得简单。
class MyDate {
public int hours, minutes;
MyDate(int hours, int minutes) {
this.hours = hours;
this.minutes = minutes;
}
public boolean isBefore(MyDate date) {
if (date.hours < hours) {
return true;
}
if (date.hours == hours) {
return date.minutes < minutes;
}
return false;
}
public boolean isAfter(MyDate date) {
if (date.hours > hours) {
return true;
}
if (date.hours == hours) {
return date.minutes > minutes;
}
return false;
}
public static boolean isBetween(MyDate intervalStart, MyDate intervalEnd, MyDate time) {
return time.isAfter(intervalStart) && time.isBefore(intervalEnd);
}
}
实际上,这样的时间和日期代码不应该出现在家庭作业练习中。在处理日期和时间时有大量的边缘情况,最好留给经过良好测试的库,比如JodaTime。