/**
*
*作者 : 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);
}
结果如下:* 代表非交易日。