import java.text.DateFormatSymbols; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Locale; public class Main { /** * 打印出日历表格 */ public static void main(String[] args) { GregorianCalendar d = new GregorianCalendar(); int today = d.get(Calendar.DAY_OF_MONTH); //今天是当月的几号 int month = d.get(Calendar.MONTH); //现在是第几月(因为从0开始算所以得到的月份要加个1) d.set(Calendar.DAY_OF_MONTH,1);//将d设置为这个月的第一天 int weekday = d.get(Calendar.DAY_OF_WEEK); int firstDayOfWeek = d.getFirstDayOfWeek(); int indent = 0; while(weekday != firstDayOfWeek){ indent++; d.add(Calendar.DAY_OF_MONTH,-1); weekday = d.get(Calendar.DAY_OF_WEEK); } String[] weekdayNames = new DateFormatSymbols().getShortWeekdays(); do{ System.out.printf("%4s", weekdayNames[weekday]); d.add(Calendar.DAY_OF_MONTH, 1); weekday = d.get(Calendar.DAY_OF_WEEK); }while(weekday != firstDayOfWeek); System.out.println(); for(int i = 1;i <= indent;i++){ System.out.print(" "); } d.set(Calendar.DAY_OF_MONTH, 1); do{ int day = d.get(Calendar.DAY_OF_MONTH); System.out.printf("%3d",day); if(day == today)System.out.print("*"); else System.out.print(" "); d.add(Calendar.DAY_OF_MONTH, 1); weekday = d.get(Calendar.DAY_OF_WEEK); if(weekday == firstDayOfWeek) System.out.println(); }while(d.get(Calendar.MONTH) == month); if(weekday != firstDayOfWeek) System.out.println(); } }
效果: