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

希望这会有所帮助。

相关问题