Java-v8-v1ch04-CalendarTest 输出日历

来源:互联网 发布:数据公司 30亿 收购 编辑:程序博客网 时间:2024/05/22 20:28
//看了半天,发现java真麻烦,在这里做一个注释~,算法思路很简单,只是其中日历的某些用法,还不太习惯,呵呵~import java.text.DateFormatSymbols;import java.util.*;/** * @version 1.4 2007-04-07 * @author Cay Horstmann */public class CalendarTest{   public static void main(String[] args)   {      // construct d as current date      GregorianCalendar d = new GregorianCalendar();      //当前日期日和月      int today = d.get(Calendar.DAY_OF_MONTH);  int month = d.get(Calendar.MONTH);  //首先把d设置到本月的第一天        // set d to start date of the month      d.set(Calendar.DAY_OF_MONTH, 1);      //本月第一天是周几      int weekday = d.get(Calendar.DAY_OF_WEEK);       // get first day of week (Sunday in the U.S.)      int firstDayOfWeek = d.getFirstDayOfWeek();        // determine the required indentation for the first line      int indent = 0;      while (weekday != firstDayOfWeek)      {         indent++;         d.add(Calendar.DAY_OF_MONTH, -1);         weekday = d.get(Calendar.DAY_OF_WEEK);      }      // print weekday names      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      {         // print day         int day = d.get(Calendar.DAY_OF_MONTH);         System.out.printf("%6d", day);         // mark current day with *         if (day == today) System.out.print("*");         else System.out.print(" ");         // advance d to the next day         d.add(Calendar.DAY_OF_MONTH, 1);         weekday = d.get(Calendar.DAY_OF_WEEK);         // start a new line at the start of the week         if (weekday == firstDayOfWeek) System.out.println();      }      while (d.get(Calendar.MONTH) == month);      // the loop exits when d is day 1 of the next month      // print final end of line if necessary      if (weekday != firstDayOfWeek) System.out.println();   }}

0 0
原创粉丝点击