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);
	}

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

 

发布了232 篇原创文章 · 获赞 61 · 访问量 75万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览