0

現在のシステム時間を取得し、2:00:00AM の startwindow 時間と 6:00:00AM の endWindowTime の 2 つの異なるタイミングの例と比較したいと考えています。現在のシステム時間がこれらのウィンドウの間にある場合は、残りのコードを実行する必要があります。

以下のコードは、JAVA 1.4 で同じコードを実行すると、JAVA 1.6 バージョンで問題なく動作します。別の日付と時刻が取得されます。

  String starTime=(String) NightlyvendorStatus[0].getPropertyValue("startTime");
  String endTime=(String) NightlyvendorStatus[0].getPropertyValue("endTime");
  Date windowStarttime = new SimpleDateFormat("HH:mm:ss").parse(starTime);
  Date windowEndtime = new SimpleDateFormat("HH:mm:ss").parse(endTime);

  Date systemdate = new Date();
  SimpleDateFormat parser = new SimpleDateFormat("HH:mm:ss");
  String systemTime=parser.format(systemdate);
  Date currentTime = new SimpleDateFormat("HH:mm:ss").parse(systemTime);

  if (currentTime.after(windowStarttime) && currentTime.before(windowEndtime))
                                                                                                                        {   ---- ---- other code ----}

JAVA 1.4 IS からの出力

Thu Jan 01 02:00:00 GMT 1970
Thu Jan 01 06:00:00 GMT 1970
Thu Jan 01 03:23:00 GMT 1970

このロジックを行う方法..

4

1 に答える 1

0

次のようなものが機能します。

String starTime = "22:00:00";
String endTime = "23:00:00";

SimpleDateFormat parser = new SimpleDateFormat("HH:mm:ss");

Calendar windowStartTime = Calendar.getInstance();
windowStartTime.setTime(parser.parse(starTime));
windowStartTime.set(0, 0, 0);

Calendar windowEndTime = Calendar.getInstance();
windowEndTime.setTime(parser.parse(endTime));
windowEndTime.set(0, 0, 0);

// This covers if time window is crosses days. Ex: 11:00PM to 2:00AM
if(windowStartTime.after(windowEndTime)) {
    windowEndTime.add(Calendar.DATE, 1);
}

Calendar currentTime = Calendar.getInstance();
currentTime.set(0, 0, 0);

System.out.println("Current Time: " + currentTime.getTime().toString());
System.out.println("Start Time: " + windowStartTime.getTime().toString());
System.out.println("End Time: " + windowEndTime.getTime().toString());

if(currentTime.after(windowStartTime) && currentTime.before(windowEndTime)) {
    System.out.println("Between Time Window");
} else {
    System.out.println("Not Between Time Window");
}

私がする理由:

windowStartTime.set(0, 0, 0);
windowEndTime.set(0, 0, 0);
currentTime.set(0, 0, 0);

すべてのカレンダーを同じ日に配置することです。

于 2013-10-24T04:32:43.220 に答える