簡體   English   中英

Android的日歷天

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM