2016-11-04 96 views
0

我有兩個日期。比較不同格式的兩個日期對象

第一個日期是系統時間。第二個日期與新聞文章相關,當文章到期時,它被稱爲end_time。

使用硒來測試文章確實在系統時間超過end_time時會過期。

我的代碼如下:

String searchstring = poriginal; 
//make objects to be compared 
Date parsed_system_time=null; 
Date parsed_end_time=null; 

//generate a current time object  
GenerateSimpleTime current_time = new GenerateSimpleTime(); 
current_time.setSystem_time_snapshot(); 
String system_time = current_time.getSystem_time_snapshot(); 


//set up the SimpleDateFormat to be used for parsing the strings into objects for comparison 
//parsing the date format e.g : 04:11:2016 11:34 AM 
SimpleDateFormat sdf = new SimpleDateFormat("dd:MM:yyyy hh:mm"); 
try{ 
    System.out.println("Trying to parse system time: \n"); 
    parsed_system_time = sdf.parse(system_time); 
} 
catch(ParseException e) 
{ 
    System.out.println("Couldnt parse system time...\n"); 
    e.printStackTrace(); 
} 

SimpleDateFormat end_time_sdf = new SimpleDateFormat("dd MMMM, yyyy hh:mm a"); 
try { 
    parsed_end_time = end_time_sdf.parse(end_date); 
} catch (ParseException e) { 
    System.out.println("Couldnt parse end_date...\n"); 
    e.printStackTrace(); 
} 

while(parsed_system_time.before(parsed_end_time)) 
{ 
current_time.setSystem_time_snapshot(); 
try { 
    system_time = current_time.getSystem_time_snapshot(); 
    parsed_system_time = sdf.parse(system_time); 
    System.out.println("endtime is: "+ parsed_end_time+"\n"); 
} catch (ParseException e) { 
    System.out.println("Couldnt parse current_time.getSystem_time_snapshot()...\n"); 
    e.printStackTrace(); 
} 
//System.out.println("system time is: \n"); 
} 

當我運行該程序的日期是按以下格式

結束時間:週五11月4 13點49分00秒AEST 2016

SYSTEMTIME :04:11:2016 1:52 PM

如果比較兩個日期時出現問題(如果它們的格式不同)。這不應該是正確的?

當我運行測試時,我的程序將無限期運行並且無法檢測系統時間是否大於結束時間。

的setSystem_time_snapshot()進行以下操作:

String pattern= "dd:MM:YYY h:mm a"; 
    SimpleDateFormat simpletime = new SimpleDateFormat(pattern); 
    system_time_snapshot = simpletime.format(new Date()); 

    System.out.println("system time snapshop is "+system_time_snapshot+"\n"); 

,我收拾這個爛攤子,並得到它正常工作任何想法?

回答

1

所以你setSystem_time_snapshot()中的

dd:MM:YYY h:mm a 

格式返回一個字符串,但你自衛隊

SimpleDateFormat sdf = new SimpleDateFormat("dd:MM:yyyy hh:mm"); 
+0

Hi @ScaryWombat 感謝您的輸入。我確實嘗試了您的建議,但沒有解決問題。 – tarquin

+0

究竟是什麼問題,是否拋出了一些異常? –

+0

沒有異常被拋出,while循環永遠不會終止:系統時間snapshop是04:11:2016 2:23 PM endtime是:星期五11月04 14:22:00 AEST 2016 – tarquin

0

如果結束時間爲:週五11月4 13時49分零零秒AEST 2016年, 你應該在你的SimpleDateFormat中使用「EEE MMM dd HH:mm:ss zzzz yyyy」

SimpleDateFormat end_time_sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy"); 
+0

感謝您花時間回覆Kevin。我設法得到它的工作謝謝。我沒有看到你的帖子。我沒有意識到格式會讓我的測試變得糟糕。感謝您的迴應。 – tarquin