?[JAVA].codes CORE JAVA 1 4-1

来源:互联网 发布:磁条读写器软件 编辑:程序博客网 时间:2024/06/07 19:13

这是一个我写了,然后改到要吐血的日期表格。实在没有耐心再改了

import java.text.DateFormatSymbols;
import java.util.*;

/**
 * @Version 1.4 2007-04-07
 * @Anna
 */
 
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);
  
  //set d to start date of the month
  d.set(Calendar.DAY_OF_MONTH,1);
  
  int weekday = d.getFirstDayOfWeek();
  
  //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("%3d",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
原创粉丝点击