代码:
package com.sjx.test1; import java.text.DateFormatSymbols; import java.util.*; /** * @version 1.0 * @author sjx */ public class Graph { public static void main(String[] args) { Locale.setDefault(Locale.US); //在java.util.locale包下,如果不加它,显示的就是星期几,而不是sun,sat之类的,中文是locale.CHINESE或者CHINA GregorianCalendar d = new GregorianCalendar(); int today = d.get(Calendar.DAY_OF_MONTH); int month = d.get(Calendar.MONTH); d.set(Calendar.DAY_OF_MONTH, 1); 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(); } }
效果: