获取某月的天数、给定日期为该年的第几日

1.获取某月的天数

Calendar calendar = Calendar.getInstance();

calendar.set(Calendar.YEAR, 2020);

calendar.set(Calendar.MONTH, month - 1);// 此处月份要减一,具体原理不知,大概是类似数组下标吧

System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH));

2.给定日期为该年的第几日

import java.util.Calendar;

import java.util.Scanner;

public class Hello {

  public static void main(String[] args) {

      Scanner scanner = new Scanner(System.in);

      int year = scanner.nextShort();

      int month = scanner.nextByte();

      int day = scanner.nextByte();

      Days days = new Days(year, month, day);

      System.out.println("给定日期的天数为该年的第" + days.getDay() + "日");

  }

}

/**

* 自定义类

* 功能:根据日期,获取给定日期为该年的第几天

* @author ZWK

*/

class Days {

  // jdk自带日历类

  private Calendar calendar = Calendar.getInstance();

  // 构造函数,传入日期,并初始化 Calendar类

  public Days(int year, int month, int day) {

      // 这里month-1是因为,Calendar类中月份表示是从0月开始的,0月也就是代表1月,与数组下标相同

      calendar.set(year, month - 1, day);

  }

  public int getDay() {

      // 创建int类型用以存放天数,默认值为当前的给定日期的天数

      int days = calendar.get(Calendar.DATE);

      // 从当前的上一个月份至0月份循环(0月份指一月)

      for (int i = calendar.get(Calendar.MONTH) - 1; i >= 0; i--) {

        // 将i设置为月份

        calendar.set(Calendar.MONTH, i);

        // days+=从当前月的上一个月份开始至0月份每个月份的天数

        days += calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

      }

      return days;

  }

}

你可能感兴趣的:(获取某月的天数、给定日期为该年的第几日)