package JAVA2;

import java.text.DateFormatSymbols;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class PrintSpace {
   public static void main(String[] args) {
       /**
        * 构造日历对象
        */
       GregorianCalendar d=new GregorianCalendar();
       /**
        * 获取当前的日期
        */
       int today=d.get(Calendar.DAY_OF_MONTH);
       System.out.println("获取当前的日期:"+today+"号");
       /**
        * 获取当前的月份
        */
       int month=d.get(Calendar.MONTH);
       System.out.println("获取当前的月份:"+(month+1)+"月");
       /**
        * 设置当前日期为本月的第一天
        */
       d.set(Calendar.DAY_OF_MONTH,1);
       int week=d.get(Calendar.DAY_OF_WEEK);
       System.out.println("获取本月第一天为星期:"+week);
       /**
        * 获取当前地区的星期的起始日期
        */
       int firstday=d.getFirstDayOfWeek();
       System.out.println("这是当前地区的起始星期:"+firstday);

       /**
        * 打印日历
        */
       int indent=0;
       while(week!=firstday)
         {
           indent++;
           d.add(Calendar.DAY_OF_MONTH, -1);
           week=d.get(Calendar.DAY_OF_WEEK);
         }
       String [] weekdayNames=new DateFormatSymbols().getShortWeekdays();
       do{
           System.out.printf("%4s",weekdayNames[week]);
           d.add(Calendar.DAY_OF_MONTH, 1);
           week=d.get(Calendar.DAY_OF_WEEK);
        }while(week!=firstday);

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

               week=d.get(Calendar.DAY_OF_WEEK);

               if(week==firstday)
                 {
                   System.out.println();
                 }

           }while(d.get(Calendar.MONTH)==month);

           if(week!=firstday)
             {
               System.out.println();
             }

}

}