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;
}
}