[英]Calendar day of month Android
我選擇開始日期(例如31/01/2014)和結束日期(例如31/12/2014),我每個月都會插入一條記錄。 如果下個月是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);
...
}
}
您在哪里創建日歷對象? 由於您要增加MONTH(即1月30日),因此下個月將是2月28日,因為下個月只有28天。 沒有2014年2月30日。此后,當您增加月份時,您將獲得3月28日,4月28日,依此類推。
假設您談論的是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的分析是正確的,請參見他的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.