Java小程序之可视化日历

题目:用Java编写一个给定日期显示出当月日历并标记出当日的程序
代码如下:
文件名:VisualCalendar.java

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * 
 * 根据输入的日期 打印出日历 并且标记出具体的一天
 * @author Administrator
 *
 */
public class VisualCalendar {

    public void printCalendar(String str) {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

        try {
            Date date = df.parse(str);

            Calendar c = new GregorianCalendar();
            c.setTime(date);

            int day = c.get(Calendar.DATE); //获取输入日期的日
            int maxday = c.getActualMaximum(Calendar.DATE); //获取输入日期月份的最大天数
            //将日期设置为当前月份的一号 并获取这一天是一周中的星期几
            c.set(Calendar.DATE, 1);
            int thisDayOfWeek = c.get(Calendar.DAY_OF_WEEK);//获取这一天是一周中的星期几
            System.out.println(c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH)+"月"); 
            System.out.println("日\t一\t二\t三\t四\t五\t六");  //输出星期行

            //输出空
            for(int j=1;j"\t");
            }

            //输出日 与星期对应
            for(int i=1;i<=maxday;i++){
                System.out.print(i);
                if(i==day){
                    System.out.print("√");
                }
                System.out.print("\t");


                int flag = c.get(Calendar.DAY_OF_WEEK);//设置一个标识 标识出当前日期是星期几

                //如果flag表示的星期为星期六 就换行
                if(flag==Calendar.SATURDAY){
                    System.out.println();
                }
                c.add(Calendar.DATE, 1);
            }
        } catch (ParseException e) {
            System.out.println("wrong");
        }
    }

}

文件名:Test.java

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        VisualCalendar vc = new VisualCalendar();
        Scanner scanner = new Scanner(System.in);
        System.out.println("input date(e.g:2011-11-11)");
        try{            
            String str= scanner.nextLine();
            vc.printCalendar(str);          
        }catch(Exception e){
            System.out.println("wrong");
        }
        scanner.close();
    }
}

写程序的过程中发现了getFirstDayOfWeek()这个方法;以为是取得当前月一号是星期几,但是看了源码后发现这是将每周第一天是星期几的数取出来;有些地区一周的第一天是周一有的地方是周日;所以getFirstDayOfWeek()的取值会不同


初学Java,欢迎大家对错误批评指正,指点迷津

你可能感兴趣的:(java小程序)