展示当前年的日历,并标出当前日/日历类Calendar

Java 日历类 Calendar

  1. java.util.Calendar

了解到1.8的新特性有一个新时间日期的API,考虑哪天改良一下这个旧玩意

Calendar类

先来讲讲这个类,Calendar是一个抽象基类,主要用于完成日期字段之间相互操作的功能,也是说,常用来对于日期某个属性的相加或者相减,而不是用字符串拼接的方法。

  1. 获取Calendar实例的方法
    由于Calendar是抽象基类,所以不能用new的方式实现,只能用它的getInstance()方法。
  2. 一个Calendar的实例是系统时间的抽象表示,通过==get(int field)==方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND,字段含义都基本可以见文知意。
    1. public void set(int field,int value)
    2. public void add(int field,int amount)
    3. public final Date getTime()
    4. public final void setTime(Date date)
public static void main(String[] args) throws ParseException, InterruptedException {
		year(new Date());
	}

	// 传入当前时间和月份
	/**
	 * 
	 * @param a
	 *            传入的时间
	 * @param i
	 *            传入月份方法当前传出的月份
	 * @return 用于循环打印当月天数
	 * @throws InterruptedException
	 */
	public static void day(Date a, int i) throws InterruptedException {
		// c用来保存设置月份和天数
		// c1用来判断当前月和累加天数后的月是否相等,如不相等则退出打印天数的循环
		// c2用来保存现在的时间和天数

		Calendar c = Calendar.getInstance();
		Calendar c1 = Calendar.getInstance();
		Calendar c2 = Calendar.getInstance();
		c2.setTime(a);
		c1.set(Calendar.MONTH, i - 1);
		c.set(Calendar.MONTH, i - 1);
		c.set(Calendar.DATE, 1);
		// 获取当月第一号是这个星期的第几天
		// 是第几天就空几个\t

		int speak = c.get(Calendar.DAY_OF_WEEK);
		if (speak == 1) {
			speak = 6;
		} else {
			speak -= 2;
		}
		// 调用空格方法
		speak(speak);
		// 循环打印天数

		for (int j = 1; j < 35; j++) {
			// 判断日期是否是10以下数字,如果是,则补零

			String month = j + "";
			month = month.length() >= 2 ? month + "" : "0" + month;
			// 如果遍历到了今日,则用红色标出打印

			if (c.get(Calendar.MONTH) == c1.get(Calendar.MONTH) && c.getTime().getMonth() == c2.getTime().getMonth()
					&& c.getTime().getDate() == c2.getTime().getDate()) {
				System.err.print(month + "\t");
				// 增加天数

				c.add(Calendar.DAY_OF_MONTH, 1);
				// 睡眠5毫秒为了防止时间毫秒错乱

				Thread.sleep(5);
				// 如果没有遍历到今日,则用黑色打印

			} else if (c.get(Calendar.MONTH) == c1.get(Calendar.MONTH)) {
				// 睡眠5毫秒为了防止时间毫秒错乱

				Thread.sleep(5);
				System.out.print(month + "\t");

				// 增加天数
				c.add(Calendar.DAY_OF_MONTH, 1);
			}
			// 当遍历到周日时,则空行
			if (c.get(Calendar.DAY_OF_WEEK) - 1 == 1) {
				Thread.sleep(5);
				System.out.println();

			}
			// 当不属于当前月时,退出循环
			if (c.get(Calendar.MONTH) != c1.get(Calendar.MONTH)) {
				break;
			}

		}

	}

	// 打印月份 传入当前时间
	/**
	 * 
	 * @param a
	 *            这是传入的时间
	 * @return 这个方法用于循环打印月份并调用打印天数
	 */
	public static void year(Date a) throws ParseException, InterruptedException {

		for (int i = 1; i <= 12; i++) {
			// 用于设置时间

			Calendar c = Calendar.getInstance();
			c.setTime(a);
			// 设置为今年
			String ing = c.get(Calendar.YEAR) + "年";

			// 打印当前月
			String month = (i) + "月";

			// 如果当前月小于10,则补零
			month = month.length() > 2 ? month + "" : "0" + month;

			// 打印月份与星期
			System.out.println("\t\t" + ing + month);
			System.out.println("周一\t周二\t周三\t周四\t周五\t周六\t周日");

			// 设置当前月
			c.set(Calendar.MONTH, i);
			// 传入打印天数方法
			day(a, i);
			System.out.println();
			// 格式
			if (i != 12) {
				System.out.println("--------------------------------------------------------");
			}
		}
	}

	// 空行方法
	/**
	 * @param a
	 *            这是当月第一号是这个星期的第几天
	 * @return 返回几个\t
	 */
	public static void speak(int a) {
		for (int i = 1; i <= a; i++) {
			System.out.print("\t");
		}

	}

最终展示效果如下图,日期格式都是标准的日历格式来进行展示
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值