如何将当前系统时间与两个时间进行比较?

时间:2013-10-24 03:36:32

标签: java

我希望得到当前的系统时间,并将两个不同的时间示例startwindow时间比作2:00:00 AM,将endWindowTime作为6:00:00 AM。如果我当前的系统时间落在这些窗口之间,我必须执行剩余的代码。

当我使用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

如何做这个逻辑..

1 个答案:

答案 0 :(得分: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);

将所有日历放在同一天。