Java学习笔记之Calendar的使用2021-03-15

时间类Calendar

取代了Date,它是一个抽象类,不同于Date,它不能被常规实例化,但提供了一个类方法getInstance,以用来获得此类型的一个通用对象。

Calendar c = Calendar.getInstance();

Date类里的大多方法它都有取代的类型

常用的几个方法如下:

/**设置固定的日期,此方法有多种不同的参数列表
*当需要对指定的日期进行操作时可先用此方法进行设置
*然后进行下面的操作
*/
Calendar.set(int year,int month,int day);

//在当前的时间上添加一个时间段
Calendar.add(Calendar.DATE,int time)

//获取当前时间
Calendar.get(Calendar.DATE);

//获取当前日是在一个月中的第几天
Calendar.get(Calendar.DAY_OF_MONTH);

//获取当前日是在一周的第几天(根据美国时间是星期日为第一天)
Calendar.get(Calendar.DAY_OF_WEEK);

//获取当前是本月的第几个星期
Calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);

//获取当前日是一年的第几天
Calendar.get(Calendar.DAY_OF_YEAR);

//获取年、月、日、时、分、秒
Calendar.get(Calendar.YEAR);
Calendar.get(Calendar.MONTH);
Calendar.get(Calendar.DATE);
Calendar.get(Calendar.HOUR);
Calendar.get(Calendar.MINUTE);
Calendar.get(Calendar.SECOND);

//获取从1970年1月1日0点0分至现在所历经的毫秒数
Calendar.get(Calendar.time);
Calendar.getTime();

大致的常用方法为以上一些例子,具体使用方法还得参考API

现在运用Calendar来打印一个日历

/**首先满足的需求:输入一个日期,然后打印出这个月的所有天
*数,按照日历的格式。
*那么再分析需要实现的功能
*1.判断这个月的1号是星期几,因为日历上的1号前面可能存在上个
*月的日期,那么需要用空格代替,所以是判断空格有几个。
*2.判断这个月有多少天
*3.循环打印日历

那么接下来开始代码环节

//扫描器,输入
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份:");
int year = sc.nextInt();
System.out.println("请输入月份");
int month = sc.nextInt();

//调用Calendar
Calendar c = Calendar.getInstance();
//设置时间
//因为月份是从0开始计算的(不知道为什么这样设计),所以要-1
c.set(year,month-1,1);
//接下来获取一个月有多少天,获取一个月的最大天数
//getActulMinimun:获取最小天数
int day = c.getActualMaximun(Calendar.DATE);
//接下来,确认1号的位置,确认它是星期几,得出有几个空格
int week = c.get(Calendar.DAY_OF_WEEK);
/**万事大吉,接下来就是循环打印出日历了
*先确定要循环的次数:最大天数+空格数
*也就是day+week;
*/
for(int i =1;i<=day+week;i++){
	//首先打印空格,这里设定条件,当i小于week时打印空格
	if(i<=week){
		System.out.print(" ");
	}else{//当大于week时,空格已经输出完了,接下来输出日期
		//此处要注意,因为先输出的空格,这时候i已经++了几次
		//但那是空格的次数,这时候日期是要从1开始,
		//所以减去空格所占的几次
		System.out.print(i-week+"\t");
		//日历是每一周换一次行,所以这里用分支语句进行
		if(i%7==0){
			System.out.println(" ");
		}
	}
}

以上就是打印日历的代码,简单的运用了Calendar类的方法
Calnedar作为新的时间类,还有着很多用法需要去摸索,本文只是记录一下今天的学习知识,更多详情查询API。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值