我想每个月都要抽几天。
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 :(得分:0)
日历为您提供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);
}
}
希望这会有所帮助。