java打印日历

/**
	 * 
	 *作者 : iechenyb<br>
	 *方法描述: 默认显示当月日历<br>
	 *创建时间: 2017年7月15日
	 *@throws SQLException
	 */
	public static void showEnMonthCal(GregorianCalendar d) throws SQLException {
		Locale.setDefault(Locale.ENGLISH);
		int month = d.get(Calendar.MONTH); // 用于循环打印当前月份的月历__月份判断
		String cellLen="%6s";
		String split="\n-------------------------------------------";
		String weekdays[] = new DateFormatSymbols().getShortWeekdays(); // 保存7个星期名
		long todayStr=DateUnsafeUtil.date2long8(d.getTime());
		System.out.printf(cellLen,"今日:"+todayStr+"["+HolidayH2DbUtils.getToday().getDesc()+"]\n");
		System.out.println("HD:节假日,TD:交易日,WD:周六|周日,CD:今天");
		System.out.println(split.substring(2));
		for (int i = 1; i < 8; ++i) {
			System.out.print(String.format(cellLen, weekdays[i]));
		}
		System.out.println(split);
		d.set(Calendar.DAY_OF_MONTH, 1); // 设置d的日期为当月1号
		int weeknameofFirstday = d.get(Calendar.DAY_OF_WEEK);// 获得当月1号的星期名
		int cnt = 1;
		while (weekdays[cnt] != weekdays[weeknameofFirstday]) // 打印日历第一行,判断当月1号从第一行的哪里开始打印
		{
			System.out.printf(cellLen," ");
			++cnt;
		}
		do {
			int day = d.get(Calendar.DAY_OF_MONTH);
			Holiday holiday = HolidayH2DbUtils.getSomeDay(d.getTime());
			String tip = holiday.getCalEnDesc();
			String showDay="";
			if(day<10) showDay="0"+day;
			else showDay = ""+day;
			if(holiday.isTradeDay()){
				System.out.printf(cellLen,showDay+tip);
			}else{
				System.out.printf(cellLen,"*"+showDay+tip);
			}
			if (weekdays[d.get(Calendar.DAY_OF_WEEK)] == weekdays[7]) // 判断是否需要换行打印
			{	
				System.out.println(split);   
			}
			d.add(Calendar.DAY_OF_MONTH, 1);
		} while (d.get(Calendar.MONTH) == month);
		System.out.println(split);
	}

结果如下:* 代表非交易日。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值