2016-11-04 25 views
0

私は2つの日付があります。異なるフォーマットの2つの日付オブジェクトを比較する

最初の日付はシステム時刻です。 2番目の日付はニュース記事に関連し、記事が期限切れになると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

2つの日付が異なる形式である場合は、2つの日付を比較するときに問題がある場合は、それは正しいことではありませんか?

テストを実行すると、プログラムが無期限に実行されて実行され、システム時間が終了時間を超えたときに検出されません。

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

こんにちは@ScaryWombatあなたのご意見ありがとうございます。私はあなたの提案を試みましたが、問題を解決しませんでした。 – tarquin

+0

何が問題なのですか?例外がスローされていますか? –

+0

例外はスローされず、whileループは決して終了しません。システムタイムスナップショットは04:11:2016 2:23 PM endtime:Fri Nov 04 14:22:00 AEST 2016 – tarquin

0

をあるある:金11月4日午前13時49分00秒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

ケビンに応答する時間をとってくれてありがとう。私はそれが働いてくれたことに感謝しました。私はあなたのポストを見ませんでした。フォーマットが私のテストを台無しにするであろうことはわかりませんでした。応答していただきありがとうございます。 – tarquin

関連する問題