2つのタイムスロットに共通する時間を計算する必要があります。私はこれを計算する効率的な方法があるかどうかを知りたがっていました。私はintで時間を節約するのが最善の方法ではないことを知っています。誰かが私にそれを保存し、それを計算する新しい方法を提案することができますか?2つのTimeSlotが共通に持つ時間を計算する
利用可能なタイムスロットが2つオーバーラップしている期間を計算する必要があります。たとえば、木曜日の10:00から13:00までの最初の利用可能なタイムスロットと、木曜日の12:00から14:00までのもう1つのタイムスロットがある場合、どちらの時間が使用可能であるかを計算できます。
public class TimeSlot implements Cloneable {
int day;
int hourStart;
int hourEnd;
int minutesStart;
int minutesEnd;
int id;
public TimeSlot(int day, int hourStart, int hourEnd, int minutesStart, int minutesEnd) {
this.day = day;
this.hourStart = hourStart;
this.hourEnd = hourEnd;
this.minutesStart = minutesStart;
this.minutesEnd = minutesEnd;
this.id = AutoIDGenerator.getAutoIdTimeSlot();
}
@Override
protected TimeSlot clone() throws CloneNotSupportedException {
return (TimeSlot) super.clone();
}
public boolean isTheSameDay(TimeSlot t) {
if (this.getDay() == t.getDay()) {
return true;
}
return false;
}
/**
*
* @param t
* @return si l'heure fournie est après this timeslot
*/
public boolean isAfter(TimeSlot t) {
if (this.isTheSameDay(t)) {
if (this.getHourEnd() > t.getHourStart()) {
return true;
} else if (this.getHourEnd() == t.getHourStart() && this.getMinutesEnd() > t.getMinutesStart()) {
return true;
}
}
return false;
}
/**
*
* @param t
* @return si l'heure fournie est avant this timeslot
*/
public boolean isBefore(TimeSlot t) {
if (this.isTheSameDay(t)) {
if (this.getHourStart() > t.getHourEnd()) {
return true;
} else if ((this.getHourStart() == t.getHourEnd()) && (this.getMinutesStart() > t.getMinutesEnd())) {
return true;
}
}
return false;
}
public boolean isCompatible(TimeSlot t) {
if (!(isBefore(t)) && !(isAfter(t))) {
return true;
}
return false;
}
}
共通点はどういう意味ですか? –
2つのタイムスロットが重なっている期間を計算する必要があります。たとえば、木曜日の10時から13時までの最初のタイムスロットと、木曜日の12時から2時までの別のタイムスロットがある場合、私たちはどれだけ時間がかかりますかを計算できます。それで、私が追加する必要があるもの – LaMoule