徒手写一个java日历程序

来源:互联网 发布:万方外文文献数据库 编辑:程序博客网 时间:2024/05/02 04:54

 也许你用VB可以拖拽出一个漂亮的日历程序,但你是否觉得这样拖来拖去一点也没有技术含量那?你是否知道日历程序的基本原理那?我想用一个JAVA程序解释一下它的基本原理,这里只是输出到控制台,不过我想只要知道了它的工作原理,你也可以用SWING做出一个漂亮的界面:

/*
 日历程序
 */

package calendartest;
//导入日期包
import java.util.Calendar;
import java.util.GregorianCalendar;

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);
  int weekday=d.get(Calendar.DAY_OF_WEEK);
  
  System.out.println("Sun Mon Tue Wed Thu Fri Sat");
  //未到当天星期数,则打印空格
  for(int i=Calendar.SUNDAY;i<weekday;i++){
   System.out.print("    ");
  }
  
  do{
   //输出日期,从1号开始记数
   int day=d.get(Calendar.DAY_OF_MONTH);
   System.out.printf("%3d",day);
   //如果为今天,则在前面打印*
   if(day==today)
    System.out.print("*");
   else
    System.out.print(" ");
   
   if(weekday==Calendar.SATURDAY)
    System.out.println();
   
   d.add(Calendar.DAY_OF_MONTH, 1);//输出后,日期加一
   weekday=d.get(Calendar.DAY_OF_WEEK);//再获取改变后日期的星期数
  }
  while(d.get(Calendar.MONTH)==month);//只要是当前月,则继续循环
  
  if(weekday!=Calendar.SUNDAY)
   System.out.println();

 }

}