11、日历类
(一)Calendar类概述
1、Calendar类的概述
Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。
Calendar提供了一个类方法getlnstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化。
调用格式:Calendar rightNow=Calendar.getlnstance()
利用上述的方法实现获取当前日历:
程序如下:
package afternoon;
import java.util.Calendar;
/*
* Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。
*Calendar提供了一个类方法getlnstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化。
调用格式:Calendar rightNow=Calendar.getlnstance()
*/
public class CalendarDemo {
public static void main(String[] args){
//获取对象
Calendar c=Calendar.getInstance();
//System.out.print(c); //这一步是用于自己对于获取日历的类型
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH);
int data=c.get(Calendar.DATE);
System.out.print(year+"年"+month+"月"+data+"日"); //打印当前的时间
}
}
Output result:2020年9月21日
注:此处用Calendar的过程当中的月份从0开始的,其中0代表1月份
(二)Calendar的常用方法
(1)Public int get(int field) 返回给定的日历字段的值
(2)Public abstract void add(int filed,int month,int data) 返回当前日历的年月日.
调用Calendar的常用方法:
程序:
package afternoon;
import java.util.Calendar;
/*
(1)Public int get(int field) 返回给定的日历字段的值
(2)Public abstract void add(int filed,int amount) 根据日历规则,将指定的时间量添加或减去给定的日历字段
(3)public final void set(int year,int month,int data) 设置当前日历的年月日
*/
public class CalendarDemo1 {
public static void main(String[] args){
//获取对象
Calendar c=Calendar.getInstance();
//需求1:3年前的今天
/*
* Public abstract void add(int filed,int amount)
根据日历规则,将指定的时间量添加或减去给定的日历字段
*/
c.add(Calendar.YEAR, -3);
//Public int get(int field) 返回给定的日历字段的值
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;
int data=c.get(Calendar.DATE);
System.out.print(year+"年"+month+"月"+data+"日"); //打印3年前的今天
System.out.print("--------");
//需求2:15年后的5天前
c.add(Calendar.YEAR, 15);
c.add(Calendar.DATE, -5);
int year2=c.get(Calendar.YEAR);
int month2=c.get(Calendar.MONTH)+1;
int data2=c.get(Calendar.DATE);
System.out.print(year2+"年"+month2+"月"+data2+"日"); //打印15年后的5天前
System.out.print("--------");
//public final void set(int year,int month,int data) 设置当前日历的年月日
c.set(2020, 10, 21);
int year1=c.get(Calendar.YEAR);
int month1=c.get(Calendar.MONTH);
int data1=c.get(Calendar.DATE);
System.out.print(year1+"年"+month1+"月"+data1+"日"); //打印设置当前日历的年月日
}
}
Output result:
2017年10月21日--------2032年10月16日--------2020年10月21日
案列:二月天
package afternoon;
import java.util.Calendar;
import java.util.Scanner;
/*
*案列:获取任意一年的二月有多少天
思路:
(1)键盘录入任意的年份
(2)设置日历的年、月、日
年:键盘录入
月:设置为3月
日:设置为1日
(3)3月1日往前推一天,就是2月的最后一天
(4)输出这一天即可。
*/
public class CalendarTest {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int year=sc.nextInt();
System.out.print("请输入年份:");
//创建日历对象
Calendar c= Calendar.getInstance();
c.set(year, 2, 1);
//3月1日往前推一天,就是2月的最后一天
c.add(Calendar.DATE, -1);
//获取这一天,输出这一天即可。
//int year=c.get(Calendar.YEAR);
//int month=c.get(Calendar.MONTH)+1;
c.add(Calendar.DATE, -1);
int data=c.get(Calendar.DATE);
System.out.print(year+"年的2月份有"+data+"天");
}
}
思考:对于采用日历类去计算任给一个月判断其为月大,还是月小??