gpt4 book ai didi

Java 和 Android 日历按月获取所有日期

转载 作者:太空宇宙 更新时间:2023-11-04 11:44:18 25 4
gpt4 key购买 nike

我正在尝试按月获取天数。

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

你能告诉我如何解决或解释为什么会发生这样的情况吗?预先感谢您

最佳答案

日历为您提供了 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);
}
}

希望这会有所帮助。

关于Java 和 Android 日历按月获取所有日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42479343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com