2013-10-24 67 views
0

我想获得当前的系统时间,并将两个不同的时间示例起始窗口时间作为2:00:00 AM和endWindowTime作为上午6:00:00进行比较。如果我当前的系统时间落在这些窗口之间,我必须执行剩余的代码。如何比较当前系统时间和两个时间?

我下面的代码工作的罚款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 

如何做这个逻辑..

+0

给定的代码不会产生输出,所以我没有看到“从JAVA 1.4输出”的含义。 –

+0

这些输出是什么意思?它是开始时间还是结束时间或系统时间? – prabu

+3

为了上帝的爱,停止实例化新的SimpleDateFormats。当你将它保存为“解析器”时,你有正确的想法 - 为什么不在任何地方使用它? – alexroussos

回答

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); 

是把所有的日历上的同一天。