java - Android 日历月日

标签 java android loops calendar gregorian-calendar

我选择开始日期(例如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/

相关文章:

java - 有没有办法使 IF 语句中定义的变量在语句本身之外可见并可用?

java - 在 android 中为 fragment 创建 "Shell"

java - Android Spinner 抛出 Java.lang.nullpointerexception - Android Beginner

java - 需要帮助在 Java 中编写等边三角形代码

循环内的 JavaScript 闭包 – 简单的实际示例

java - GWT 的各种异步设施

JavaCPP 在函数消歧方面失败

java - 我的 SQL 语句有什么问题?无法插入 NULL

android - 在添加之前或之后设置 fragment 内容?

c++ - 我的循环不会循环