《Core Java》中的一个例子程序-日历

《Core Java》中的一个例子程序-日历

/**
   @version 1.30 2000-03-27
   @author Cay Horstmann
*/

import java.util.*;

public class CalendarTest

   public static void main(String[] args)
   { 
      // 首先构造一个日历对象,把它初始化为当前的日期和时间.
      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); // 设置d为当前的这个月的第一天
      int weekday = d.get(Calendar.DAY_OF_WEEK); //得到这一天是星期几,如果是星期天的话,weekday被设置为1,依次类推

      System.out.println("Sun Mon Tue Wed Thu Fri Sat");  // 打印标题头和空格作为第一行

    
      for (int i = Calendar.SUNDAY; i < weekday; i++ )//找到第一天对应的星期几的位置
         System.out.print("    ");

      do
      { 
        
         int day = d.get(Calendar.DAY_OF_MONTH);//因为前面设置了d为当前月的第一天,所以第一次循环中day为1
        
         if (day < 10) System.out.print(" ");//如果天小于10,就打印一个空格,然后打印天。
         System.out.print(day);

         if (day == today)//如果这天是当然就在后面打印个*
            System.out.print("* ");
         else
            System.out.print("  ");

        
         if (weekday == Calendar.SATURDAY)// 如果是星期6就在后面进行换行
            System.out.println();

        
         d.add(Calendar.DAY_OF_MONTH, 1);// 然后,我们让d指向下一天
         weekday = d.get(Calendar.DAY_OF_WEEK);//上一句代码设置了为下一天的日期,所以这个weekday为下一天的星期几
      }
      while (d.get(Calendar.MONTH) == month);//如果d在当月中就保持循环
     

    
      if (weekday != Calendar.SUNDAY) // 打印最后的行
         System.out.println();
   }
}

结果输出:
Sun Mon Tue Wed Thu Fri Sat
                 1    2    3    4
  5       6        7        8    9    10* 11
 12     13      14      15  16  17  18
19      20      21      22  23  24  25
26      27      28      29  30

你可能感兴趣的:(《Core Java》中的一个例子程序-日历)