我选择开始日期(例如2014年1月31日)和结束日期(例如2014年12月31日),我每个月插入一条记录。如果我得到的下个月是 2 月 28 日,但是尽管 3 月、4 月等我总是得到 28... 我该如何修复?我希望我能解释一下
SimpleDateFormat sdf1 = new SimpleDateFormat( "yyyy-MM-dd" );
ContentValues cv = new ContentValues();
for(
int i=0;
calendar1.getTime().before(calendar2.getTime());
i++
) {
calendar1.add(Calendar.MONTH, 1);
if (calendar1.getTime().before(calendar2.getTime())) {
String strDate = sdf1.format(calendar1.getTime());
cv.put(etableTable.DATE, strDate);
db.insert(etableTable.TABLE_NAME, null, cv);
...
}
}
最佳答案
假设您谈论类 GregorianCalendar
- 而不是 calendar1.add(Calendar.MONTH, 1)
尝试调用以下方法作为解决方法:
static GregorianCalendar moveToEndOfMonth(GregorianCalendar gcal) {
gcal.add(Calendar.MONTH, 1); // moving to some day of next month
gcal.set(Calendar.DAY_OF_MONTH, 1); // moving to first day of current month
gcal.add(Calendar.DATE, -1); // moving to last day of previous month
}
所以你的最终代码应该如下所示:
calendar1.add(Calendar.MONTH, 1);
moveToEndOfMonth(calendar1);
为什么? @DavidCAdams的分析是对的,看他的回答。
关于java - Android 日历月日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21470755/