2013-10-24 68 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); 

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