import java.text.DateFormatSymbols;
import java.util.*;
public class Test{
public static void main(String[] args){
GregorianCalendar d = new GregorianCalendar();
int today = d.get(Calendar.DAY_OF_MONTH);
int month = d.get(Calendar.MONTH); //当前的月份应该month + 1
System.out.println(today + " " + 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[] weekdayNmaes = new DateFormatSymbols().getShortWeekdays();
do{
System.out.printf("%4s",weekdayNmaes[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.printf(" ");
}
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();
}
}