java时间Calendar类实现控制台打印日期

java中Calendar类包含有获取和设置时间/日期的方法;此方法为抽象方法,无法直接实例化,所以可以通过子类或工厂模式方法获取实例化对象。

首先创建Calendar对象
方法1:工厂模型getInstance()方法获取对象(常用)

Calendar c = Calendar.getInstance();

方法2:使用GregorianCalendar子类获取实例化对象

Calendar c = new GregorianCalendar();

打印日期我们需要从1号开始打印,所以首先就需要吧日期设置到1号,可以使用Calendar里的set(int field, int value)方法进行设置;第一个参数需要传递的是我们要修改的年Calendar.YEAR/月Calendar.MONTH/日Calendar.DATE等时间/日期,第二个参数就是我们要设置的值;我们还可以给出提示信息

		Calendar c = Calendar.getInstance();
		c.set(Calendar.DATE, 1);
		System.out.println("========================" + c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) +1) + "月========================");
		System.out.println("日\t一\t二\t三\t四\t五\t六");

我们希望1号是在本月对应的星期下,所以我们可以通过获取星期数,然后打印对应的空格实现;通过get(int field)方法获取星期数Calendar.DAY_OF_WEEK;java中的1代表的星期日,2代表的是星期一;以此类推

		Calendar c = Calendar.getInstance();
		c.set(Calendar.DATE, 1);
		System.out.println("========================" + c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) +1) + "月========================");
		System.out.println("日\t一\t二\t三\t四\t五\t六");
		int week = c.get(Calendar.DAY_OF_WEEK);
		//打印空格
		for(int i = 1;i < week;i++) {
			System.out.print(" \t");
		}

空格打印完毕后,就可以打印日期,而且希望打印的日期都是对应自己的星期数,所以我们就可以对week变量进行操作来完成换行;但是要打印多少次呢?Calendar里存在方法getActualMaximum(int field)方法已经封装好了天数可以供我们直接调用;每次打印后都需要使日期增加1,这时可以使用add(int field, int amount)方法,第一个参数代表我们要修改的年Calendar.YEAR/月Calendar.MONTH/日Calendar.DATE等时间/日期,第二个参数代表我们要增加的量,正数是做加法,负数做减法

Calendar c = Calendar.getInstance();
		c.set(Calendar.DATE, 1);
		System.out.println("========================" + c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) +1) + "月========================");
		System.out.println("日\t一\t二\t三\t四\t五\t六");
		int week = c.get(Calendar.DAY_OF_WEEK);
		//打印空格
		for(int i = 1;i < week;i++) {
			System.out.print(" \t");
		}
		//打印日期
		for(int i = 1;i <= c.getActualMaximum(Calendar.DAY_OF_MONTH);i++) {
			System.out.print(c.get(Calendar.DATE) + "\t");
			c.add(Calendar.DATE, +1);
			//到达7表示一个星期结束
			if(week == 7) {
				//实现换行	
				System.out.println();
				week = 0;
			}
			week++;
		}

运行后的结果如下图所示
在这里插入图片描述
大家如果有更好的方法,可以一起交流学习进步哟!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值