2016-11-04 3 views
0

두 날짜가 있습니다.다른 형식의 두 날짜 개체 비교

첫 번째 날짜는 시스템 시간입니다. 두 번째 날짜는 뉴스 기사와 관련이 있으며 기사가 만료되면 end_time이라고합니다.

메신저를 사용하여 시스템 시간이 end_time을 초과하면 문서가 실제로 만료되는지 테스트합니다. 금 11월 4일 오스트레일리아 동부 표준시 13시 49분 0초 2016

SYSTEMTIME : 내가 프로그램을 실행하면

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

는 날짜는 다음과 같은 형식으로

ENDTIME 있습니다 : 다음과 같이

내 코드입니다 : 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 

의 형식으로 문자열을 반환하지만 ENDTIME 경우 자위대가

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

안녕하세요 @skaryWombat 귀하의 의견에 감사드립니다. 나는 당신의 제안을 시도했지만 그 문제를 해결하지 못했습니다. – tarquin

+0

정확히 어떤 문제가 발생합니까? 예외가 발생합니까? –

+0

예외가 발생하지 않고 while 루프가 종료되지 않습니다. 시스템 시간 스냅 샷은 04 : 11 : 2016 2:23 PM endtime : Far Nov 04 14:22:00 AEST 2016 – tarquin

0

을이다 : 금 11월 4일 오스트레일리아 동부 표준시 13시 49분 0초 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