2017-12-15 19 views
-3

こんにちは皆この問題は今私を狂っています。私のデータベースにdueDateという文字列があり、値はJan 18, 2018です。私はそれを取り出し、私のrecyclerAdapterの文字列に保存しましたString dueDate = transactionTasks.get(position).get_transactiontaskpaydet().toString();文字列を日付に変換して現在の日付に変換します

今私はそれを現在の日付と比較したいと思いますし、期日が現在の日付より後であれば、赤色のdueDateが表示されます。

は私のコードです。

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ブロック内の値を取得していないので、私はエラーを取得します。これは完璧に動作しても廃止予定のコードを使用しないでください。

私が見つけたすべての答えは私にとってはうまくいかなかった。文字列を日付に変換するだけで、現在の日付と比較できるようにする必要があります。ありがとうGuys

+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(); 
    } 
} 

を私はこれが役に立てば幸い!

関連する問題