2

問題: 時間を含むリストがあります。例: 08:15:00 08:45:00 09:00:00 12:00:00 ...アプリケーションは、ユーザーが特定の時間に予約を入れることを許可しています。 : 8:15:00、各会議には 30 分かかります。

質問: このような予約に必要なスロットがあるかどうかを判断するにはどうすればよいですか? Calendar クラスには before() と after() のメソッドがあることは知っていますが、それで問題は解決しません。12:00 に予定があり、12:00 に別の予定がある場合、12:15 に別の予定を作成する前にどのように防ぐのですか?

編集:

前に述べた方法を使用してみました。

Calendar cal1 = Calendar.getInstance(); // for example 12:00:00
Calendar cal2 = Calendar.getInstance(); // for exmaple 12:30:00
Calendar userTime = Calendar.getInstance(); // time to test: 12:15:00

if(user.after(cal1)&& user.before(cal2)){
... // do sth
}
4

3 に答える 3

5

チェックする日付が提供された2つの間にあるかどうかをチェックします。

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm");
Date before = sdf.parse("07/05/2012 08:00");
Date after = sdf.parse("07/05/2012 08:30");
Date toCheck = sdf.parse("07/05/2012 08:15");
//is toCheck between the two?
boolean isAvailable = (before.getTime() < toCheck.getTime()) && after.getTime() > toCheck.getTime();

決められた時間に予約するには、2つの日付とこれをチェックするメソッドを使用してクラスを実行します。

public class Appointment{

 private Date start;
 private Date end;

 public boolean isBetween(Date toCheck){....}

}

次に、Scheduleクラスの拡張ArrayList、メソッドの追加、isDateAvailable(Date toCheck)予定のリストの反復、競合するものがないことの確認を行うだけです。

于 2012-05-07T20:52:46.343 に答える
1

開始タイムスタンプと期間、または開始時間と終了時間のいずれかを持つ、ある種の予定クラスがあります。次に、スケジュールに新しい予定を追加するときに、新しい予定より前の開始時刻の予定が、提案された新しい予定の開始時刻を超えないことを確認します。

于 2012-05-07T20:47:35.977 に答える
1

どのように行うかは、データや形式などをどのように保存するかによって異なりますが、通常は、要求された時間から要求された時間+要求された長さの間に予定があるかどうかを確認するだけです。

// Example (using int time(1 = 1 minute), assuming that appointments can only be at 15min intervals)
boolean isHalfHourTimeSlotAvaliable(int time) {
    for (int i = 0; i < appointments.size(); i++) {
        if (appointments.get(i).time == time || appointments.get(i).time == time + 15) {
            return false;
        }
    }
    return true;
}
于 2012-05-07T20:47:56.130 に答える