0

我想获取当前系统时间并与两个不同的计时示例 startwindow 时间为 2:00:00AM 和 endWindowTime 为 6:00:00AM 进行比较。如果我当前的系统时间介于这些窗口之间,我必须执行其余的代码。

我下面的代码适用于 JAVA 1.6 版本,当我使用 JAVA 1.4 执行相同的代码时,我得到不同的日期和时间

  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 的输出是

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 回答