2017-02-27 3 views
1

私は毎月の日数を取得しようとしています。毎月すべての日を取得するJavaとAndroidのカレンダー

this.mCalander = Calendar.getInstance(); 
    this.mDf = new SimpleDateFormat("yyyy-MM-dd"); 

    for (int i = 0; i <= 0; i++) { 
     mCalander.set(Calendar.YEAR, this.nextYear); 
     for (int j = 0; j <= 11; j++) { 
      mCalander.set(Calendar.MONTH, j); 
      Log.d("INFO", "MONTH : " + (j + 1)); 

      int maxDay = mCalander.getActualMaximum(Calendar.DAY_OF_MONTH); 
      for (int k = 1; k <= maxDay; k++) { 
       mCalander.set(Calendar.DAY_OF_MONTH, k); 
       Log.d("INFO", mDf.format(this.mCalander.getTime())); 
      } 
     } 
    } 

しかし事は、あなたはそれがこのようになぜ起こるか

Log.d("INFO", "Month : " +(j+1)); 
    for(k=0; k<maxDate; k++) { 
     Log.d("INFO", mDf.format(this.mCalander.getTime())); 
    } 

は、あなたがどのように修正するか、その理由を教えてできることを見るように、それは

2017-01-30 
    2017-01-31 
    MONTH : 2 
    2017-03-01 
    2017-03-02 

のように、誤って出力しているのですか? は

+0

2017年のすべての日を印刷しますか? – tahsinRupam

+0

@tahsinRupamそうだね –

答えて

0

カレンダーは、あなたが追加年、月、日などのように、カレンダーの中の任意のフィールドの/減少値をインクリメントする()メソッドを追加できます事前にありがとうここでチェック:Calendar.add(int, int)

だから、あなたはまた、以下に従うことができますアプローチでは、年間の範囲でループすることもできます。デモ用に2017年を設定しました。

mCalander.set(Calendar.YEAR, 2017); 
mCalander.set(Calendar.MONTH, 0); 
int totalMonths = mCalander.getActualMaximum(Calendar.MONTH); 
for (int j = 0; j <= totalMonths; j++) { 
    Log.d("INFO", "MONTH : " + j); 
    int maxDay = mCalander.getActualMaximum(Calendar.DAY_OF_MONTH); 
    mCalander.set(Calendar.DAY_OF_MONTH, 1); 
    for (int k = 1; k <= maxDay; k++) { 
     Log.d("INFO", k + " - " + mDf.format(mCalander.getTime())); 
     mCalander.add(Calendar.DAY_OF_MONTH, 1); 
    } 
} 

希望すると、これが役に立ちます。

関連する問題