2017-02-27 34 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())); 
      } 
     } 
    } 

但事情是它打印出正確像

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

,你們看

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

你能告訴我如何解決或原因爲什麼會發生這樣的嗎? 預先感謝您

+0

您是否試圖在2017年每月打印所有日期? – tahsinRupam

+0

@tahsinRupam是的沒錯 –

回答

0

日曆爲您提供了add()方法來增加在日曆上的任何字段/跌值,如ADD年,月,日等檢查這裏: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); 
    } 
} 

希望這會有所幫助。

相關問題