0

指定された時間セットがJavaですでに予約されている時間に利用可能であることを確認するにはどうすればよいですか.json応答からの配列リスト に「 yyyy-MM-dd hh:mm:ss 」形式で時間を保存します。たとえば、チケットが次の時間に予約されていて、新しい顧客がその時間にチケットをリクエストしている場合、すでに予約した時間からチケットの空き状況を確認するにはどうすればよいですか.

サンプル チケットの予約済み時間:

time set 1
        start time  "2013-11-11 08:10:00";
        end time    "2013-11-11 10:03:00";
time set 2          
        start time  "2013-11-11 14:11:00";
        end time    "2013-11-11 16:10:00";

time set 3      
        start time  "2013-11-11 11:00:00";
        end time    "2013-11-11 12:10:00";

time set 4          
        start time  "2013-11-11 19:00:00";
        end time    "2013-11-11 23:30:00";

シナリオ 1:

以下の時間帯の新規顧客リクエスト チケット (利用可能時間):

    start time  "2013-11-11 10:04:00";
    end time    "2013-11-11 10:59:00";

特に時間指定の時間はございませんので、この時間セットをご利用いただけます。

シナリオ 2:

以下の時間の新規顧客リクエスト チケット (利用不可時間):

    start time  "2013-11-11 09:55:00";
    end time    "2013-11-11 10:59:00";

09:55:00は時間設定 1で既に予約されているため、この時間設定は利用できません

シナリオ :

以下の時間の新規顧客リクエスト チケット (利用不可時間):

    start time  "2013-11-11 10:20:00"
    end time    "2013-11-11 11:20:00"

11:20:00は時間設定 3で既に予約されているため、この時間設定は利用できません

次のメソッドを使用して、json の結果を配列リストに格納します。

    DateFormat formate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

    ArrayList<Date> dealStart = new ArrayList<Date>();
    ArrayList<Date> dealEnd = new ArrayList<Date>();

    dealStart.add(formate.parse(jsonObject.getString("booked_start_time"));
    dealEnd.add(formate.parse(jsonObject.getString("booked_end_time"));

Java / Androidのロジックの問題を解決するのを手伝ってください.

4

2 に答える 2

0

ロジックに問題があることは承知していますが、Joda-Timeを使用して Java/Android の時間や時間に関連するものを管理することを検討することを強くお勧めします。時間を正確に把握するのは難しく、考えていないことがたくさんあります (タイムゾーン、夏時間など)。言うまでもなく、Joda Time は非常に単純で、Java よりもはるかに使いやすく、理解しやすいものです。規格。

あなたのアプリケーションは非常に時間に依存しているように見えるので、これは良い考えです。

ロジックに戻りましょう。Joda を使用すると、予約した時間に対してIntervalインスタンスを作成し、要求されたチケットの時間に対して 1 つのインスタンスを作成し、時間の計算を実行するだけです。より抽象的なPeriodを使用することもできます。

比較的簡単で、非常に簡単なはずです。

例:

DateTime bookedstart = new DateTime(2013, 10, 25, 13, 0, 0, 0); //13:00
DateTime bookedend = new DateTime(2013, 10, 25, 14, 0, 0, 0);   //14:00
Interval interval = new Interval(bookedstart, bookedend);
DateTime requested = new DateTime(2013, 10, 25, 15, 45, 0, 0); //15:45
System.out.println(interval.contains(requested)); // false, so it's available.
于 2013-11-12T19:30:57.547 に答える