java - Calender.set(Calender.Month, ?) 如何工作?

标签 java date java.util.calendar

我正在编写一种方法,可以将日期提前给定的周数。这是我的代码:

public class Date {
int year;
int month;
int day;

public Date (int year, int month, int day){
    this.year = year;
    this.month = month;
    this.day = day;

}
    public void addWeeks (int weeks){
    int week = weeks * 7;
    DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_MONTH, this.day);
    calendar.set(Calendar.MONTH, this.month);
    calendar.set(Calendar.YEAR, this.year);
    calendar.add(Calendar.DAY_OF_MONTH, week);
    System.out.println();
    System.out.println("Date after adding " + weeks + " weeks is: " + dateFormat.format(calendar.getTime()));
}

因此,如果我将今天的日期传递给年、月和日。 (03/08/2019) 然后调用 addWeeks(1) 例如,那么日期应该提前为 (03/15/2019) 但它给了我 (04/15/2019)。由于某种原因,月份总是比我输入的月份多 1。如果我输入月份 2,则给出 3,如果我输入 3,则给出 4。

最佳答案

原因如下:

public static final int MONTH: Field number for get and set indicating the month. This is a calendar-specific value. The first month of the year in the Gregorian and Julian calendars is JANUARY which is 0; the last depends on the number of months in a year.

所以,你需要:

calendar.set(Calendar.MONTH, this.month-1);

Jan: 0
Feb: 1
Mar: 2
Apr: 3
May: 4
Jun: 5
Jul: 6
Aug: 7
Sep: 8
Oct: 9
Nov: 10
Dec: 11

关于java - Calender.set(Calender.Month, ?) 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55070978/

相关文章:

java - 我的数组出现空指针异常?

java - 跨浏览器测试、布局测试和持续集成

swift - 将第二个添加到日期的结果是一分钟;解决方法

r - 使用 R 检测无事件天数

java - 计算日期差异时出现奇怪的值

java - AbstractTableModel 和实际 SQL 语句之间的正确关系是什么?

java - 迭代一个字符的位

javascript - 旧日期的 Intl.DateTimeFormat 时区问题

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