Calendar类

Calendar概述

日历类,是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。替代Date类

获取Calendar实例

Calendar rightNow = Calendar.getInstance();

常用字段摘要

  • YEAR:年
  • MONTH:月
  • DAY_OF_MONTH:指示一个月中的某天
  • DAY_OF_WEEK:指示一个星期中的某天
  • DAY_OF_YEAR :指示当前年中的天数
  • HOUR:指示上午或下午的小时
  • HOUR_OF_DAY:指示一天中的小时
  • WEEK_OF_MONTH:指示当前月中的星期数
  • WEEK_OF_YEAR :指示当前年中的星期数

常用方法摘要

  • public static Calendar getInstance():使用默认时区和语言环境获得一个日历(成员方法)
  • public int get(int field):返回给定日历字段的值(成员方法)
	public static void main(String[] args) {
		//获取Calendar实例
		Calendar c = Calendar.getInstance();//父类引用指向子类对象
		System.out.println(c.get(Calendar.YEAR));//通过字段获取年
		System.out.println(c.get(Calendar.MONTH)+1);//通过字段获取月,但是月是从0开始编号的,所以要+1
		System.out.println(c.get(Calendar.DAY_OF_MONTH));//通过字段获取日
		System.out.println(c.get(Calendar.DAY_OF_WEEK));//周日是第一天,周六是最后一天
		
		System.out.println(c.get(Calendar.YEAR)+"年"+getNum((c.get(Calendar.MONTH)+1))+"月"
				+getNum(c.get(Calendar.DAY_OF_MONTH))+"日"+getWeek(c.get(Calendar.DAY_OF_WEEK)));
	}
	
	/**
	 * 将星期存储表中进行查表
	 * 返回值String
	 * 参数列表int week
	 */
	public static String getWeek(int week){
		String[] arr = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
		return arr[week];
	}
	
	/**
	 * 如果是一个数字,前面补0
	 * 返回值类型String
	 * 参数列表,int num
	 */
	public static String getNum(int num){
		return num > 9 ? ""+num : "0"+num;
	} 
  • public void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量
  • public void set(int field, int value):将给定的日历字段设置为给定值
  • public void set(int year, int month, int date):设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
  • ......更多请查看API文档
	public static void main(String[] args) {
		//获取Calendar实例
		Calendar c = Calendar.getInstance();
		
		//对指定字段进行向前减向后加操作
		c.add(Calendar.YEAR, -1);
		c.add(Calendar.MONTH, 2);
		c.add(Calendar.DAY_OF_MONTH, -3);
		c.add(Calendar.DAY_OF_WEEK, 4);
		
		//对指定字段进行修改操作
		c.set(Calendar.YEAR, 2999);
		c.set(2020, 5, 6);
		
		
		System.out.println(c.get(Calendar.YEAR)+"年"+getNum((c.get(Calendar.MONTH)+1))+"月"
				+getNum(c.get(Calendar.DAY_OF_MONTH))+"日"+getWeek(c.get(Calendar.DAY_OF_WEEK)));
	}
	
	/**
	 * 将星期存储表中进行查表
	 * 返回值String
	 * 参数列表int week
	 */
	public static String getWeek(int week){
		String[] arr = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
		return arr[week];
	}
	
	/**
	 * 如果是一个数字,前面补0
	 * 返回值类型String
	 * 参数列表,int num
	 */
	public static String getNum(int num){
		return num > 9 ? ""+num : "0"+num;
	} 

 

练习:如何获取任意年份是平年还是闰年

思路:判断2月的天数

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入年份,判断是平年还是闰年:");
		
		String line = sc.nextLine();
		int year = Integer.parseInt(line);
		
		//获取Calendar实例
		Calendar c = Calendar.getInstance();
		//设置那一年的3月1日
		c.set(year, 2, 1);
		//将日向前减1
		c.add(Calendar.DAY_OF_MONTH, -1);
		//判断是否是29天
		System.out.println(c.get(Calendar.DAY_OF_MONTH) == 29 ? "闰年" : "平年");
	}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值