2017-12-15 9 views
-3

안녕 얘들 아이 문제는 지금 나를 미치게합니다. 값이 Jan 18, 2018dueDate이라는 데이터베이스에 문자열이 있습니다. 나는 그것을 회수하여 내 recyclerAdapter에 문자열로 저장했다. String dueDate = transactionTasks.get(position).get_transactiontaskpaydet().toString();문자열을 날짜로 변환하고 현재 날짜와 비교하십시오.

이제 이것을 현재 날짜와 비교하고 만기 날짜가 현재 날짜 이후 인 경우 만기일을 빨간색으로 표시해야한다.

내 코드가 있습니다.

String dueDate = transactionTasks.get(position).get_transactiontaskpaydet().toString(); 
    Date cdate = new Date(); 
    Date ddate = new Date(dueDate); 

    if(cdate.after(ddate)){ 
     holder.date.setTextColor(Color.RED); 
    } 

이 코드는 완벽하게 작동하지만 Date(dueDate);은 더 이상 사용되지 않습니다. 그리고 trycatch을 사용하는 다른 방법을 사용할 때 어떤 결과도 얻지 못합니다. 다음은

SimpleDateFormat format = new SimpleDateFormat("E, MMM dd yyyy"); 
    Date curDate = new Date(); 
     try { 
      Date datedue = format.parse(dueDate); 
      if(curDate.after(datedue)) { 
       holder.date.setTextColor(Color.RED); 
      } 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

코드입니다 그리고 난 Date duedate = null;를 사용하여 try 블록 외부 Date를 작성하려고하면 그것은 try 블록 내부의 값을받지 때문에 오류가 발생합니다. 이것은 완벽하게 작동하더라도 비추천 코드를 사용해서는 안되기 때문에 저를 미치게합니다.

나는 모든 답변을 찾지 못했습니다. 문자열을 날짜로 변환 할 수 있어야 현재 날짜와 비교할 수 있습니다. 고마워 얘들 아

+0

캘린더 사용 cal = Calendar.getInstance(); 대신 – RaniDevpr

+0

이것은 "별난 구문을 사용하여 날짜를 구문 분석하는 방법"과 다른 것입니다. 필자는 (다른 것들 중에서) 날짜 구문과 일치하는 날짜 형식을 만드는 방법을 설명하는 일반적인 Q & A에 연결했습니다. (그 Q & A가 당신을 위해 작동하지 않는다면, 제대로 읽지 않은 것입니다!) –

답변

1

나는 문제가 당신의 SimpleDateFormat와 함께 있다고 생각합니다. 당신의 문자열이 정말로 다음 "Jan 18, 2018" 인 경우에는 해당 SimpleDateFormat 이런 일치해야합니다

SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy"); 

나는 이것을 테스트하는 빠른 방법을 만들어 그것을 잘 작동 :

public static void main(String args[]) { 
    String dueDate = "Jan 18, 2018"; 
    SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy"); 
    Date curDate = new Date(); 
    try { 
     Date datedue = format.parse(dueDate); 
     if(curDate.after(datedue)) { 
      holder.date.setTextColor(Color.RED); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

난이 도움이되기를 바랍니다!