Calender 是抽象类,不能直接实例化,要用直接子类(GregorianCalender)实例化。
Calender 为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。
Calender 提供了一个类方法 getInstance 用于获取 Calender 对象,其日历字段已使用当前日期和时间初始化:
Calender rightNow = new Calender.getInstance();
Calender 常用方法
方法名 | 说明 |
---|---|
public int get(int field) | 返回给定日历字段的值 |
public abstract void add(int field,int amount) | 根据日历的规则,将指定的时间量添加或减去给定的日历字段 |
public final void set(int year,int month,int date) | 设置当前日历的年月日 |
public class Demo{
public static void main(String[] args){
Calendar c = Calendar.getInstance();//多态的形式
int year = c.get(Calendar.YEAR);
int mouth = c.get(Calendar.MONTH) + 1;//因为这里的月份是从 0 开始的
int day = c.get(Calendar.DATE);
System.out.println(year+"-"+mouth+"-"+day);
//public abstract void add(int field,int amount)
c.add(Calendar.YEAR,-1);//当前年份减 1,如果是正数就是增加年份。下边同理
c.add(Calendar.MONTH,2);//当前月份增加 2
c.add(Calendar.DATE,-5);//当前日期减 5
//再次获取日期
year = c.get(Calendar.YEAR);
mouth = c.get(Calendar.MONTH) + 1;
day = c.get(Calendar.DATE);
System.out.println(year+"-"+mouth+"-"+day);
System.out.println("----------------");
//public final void set(int year,int month,int date)
//我想设置为2001年3月14日
c.set(2001,3,14);
//再次获取日期
year = c.get(Calendar.YEAR);
mouth = c.get(Calendar.MONTH);//注意:这里就不用加 1 了
day = c.get(Calendar.DATE);
System.out.println(year+"-"+mouth+"-"+day);
}
}
练习:某年的2月有多少天?
import java.util.Scanner;
import java.util.Calendar;
public class Demo{
public static void main(String[] args){
//用于键盘输入年份
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
//输入年份
int year = input.nextInt();
//创建 Calendar 对象
Calendar c = Calendar.getInstance();
//设置为该年的3月1日
//年份设置输入的年份,月份是从 0 开始的,所以月份设为 2 ,天为第 1 天
c.set(year,2,1);
//然后天数减一,就是二月的最后一天了
c.add(Calendar.DATE,-1);
//获得该年二月最后一天的日
int day = c.get(Calendar.DATE);
System.out.println(year+"年的2月共有"+day+"天");
}
}