java - 如何使用日历类获取一个月内的所有日期?

标签 java java.util.calendar

在这里我想显示日期

2013-01-01,
2013-01-02,
2013-01-03,
.
.
...etc

我可以得到一个月的总天数

private int getDaysInMonth(int month, int year) {
  Calendar cal = Calendar.getInstance();  // or pick another time zone if necessary
  cal.set(Calendar.MONTH, month);
  cal.set(Calendar.DAY_OF_MONTH, 1);      // 1st day of month
  cal.set(Calendar.YEAR, year);
  cal.set(Calendar.HOUR, 0);
  cal.set(Calendar.MINUTE, 0);
  Date startDate = cal.getTime();

  int nextMonth = (month == Calendar.DECEMBER) ? Calendar.JANUARY : month + 1;
  cal.set(Calendar.MONTH, nextMonth);
  if (month == Calendar.DECEMBER) {
     cal.set(Calendar.YEAR, year + 1);
  }
  Date endDate = cal.getTime();

  // get the number of days by measuring the time between the first of this
  //   month, and the first of next month
  return (int)((endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000));
}

有没有人有想法帮助我?

最佳答案

如果您只想获得一个月中的最大天数,您可以执行以下操作。

// Set day to one, add 1 month and subtract a day
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DAY_OF_MONTH, 1); 
cal.add(Calendar.MONTH, 1);
cal.add(Calendar.DAY_OF_MONTH, -1);
return cal.get(Calendar.DAY_OF_MONTH);

如果您真的想每天打印,那么您只需将月中的第几天设置为 1,然后循环添加一天,直到月份发生变化。

Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DAY_OF_MONTH, 1); 
int myMonth=cal.get(Calendar.MONTH);

while (myMonth==cal.get(Calendar.MONTH)) {
  System.out.print(cal.getTime());
  cal.add(Calendar.DAY_OF_MONTH, 1);
}

关于java - 如何使用日历类获取一个月内的所有日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20089549/

相关文章:

java - java页面上下文属性的垃圾收集

java - 使用可变参数绘制星形

java - 除七月外,全年都可使用日历

java - java.time 中 Calendar.roll 的等价物是什么?

Java 日历错误?

Java Calendar.DAY_OF_WEEK 给出了错误的一天

java - 如何将整数添加到 ArrayList<Float>

java - Java程序中的一行和语句是一回事吗?

java - Maven 程序集 : add different version of the same artifact

Java 日历未显示正确的 HOUR_OF_DAY