JAVA 按年月打印日历 Calendar的简单使用

来源:互联网 发布:java post json 编辑:程序博客网 时间:2024/05/22 15:00
public class CalendarBook {    public static void main(String[] args) throws ParseException {        CalendarBook cb = new CalendarBook();        cb.printWeekTitle();        cb.printCalendar(2015,8);    }    public void printCalendar(int year,int month) throws ParseException{        String monthStr;  //格式化月份,因为要转成yyyyMMdd格式的        if(month<10){            monthStr = "0"+month;        } else{            monthStr = month+""; //数字跟字符串拼接转成字符串格式        }        String yearMonthStr = year+monthStr;        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");        Calendar calendarEnd = Calendar.getInstance();        Calendar calendarStart = Calendar.getInstance();        //根据年份和月份得到输入月份有多少天        int monthDays = getMonthLastDay(year, month);          //月初的date字符串        String dateStartStr = yearMonthStr+"01";            //月末的date字符串        String dateEndStr = yearMonthStr+monthDays;          Date startDate = sdf.parse(dateStartStr);        Date endDate = sdf.parse(dateEndStr);        calendarStart.setTime(startDate);        calendarEnd.setTime(endDate);        //得到输入月份有多少周        int weeks = calendarEnd.get(Calendar.WEEK_OF_MONTH);          //得到当月第一天是星期几,这里周日为第一天,从1开始,周一则为2        int dayOfWeek = calendarStart.get(Calendar.DAY_OF_WEEK);          int day = 1;        //当月的第一周做特殊处理,单独打印一行        for(int i=1;i<=7;i++){            if(i>=dayOfWeek){                System.out.print(" "+day+"  ");                day++;            } else{                System.out.print("    ");            }        }        System.out.println();        //开始打印从第二周开始的日期        for(int week=1;week<weeks;week++){            for(int i=1;i<=7;i++){                if(day>monthDays){                    break;                }                if(day<10){                    System.out.print(" "+day+"  ");                } else{                    System.out.print(day+"  ");                }                day++;            }            System.out.println();        }    }    public int getMonthLastDay(int year,int month){        int monthDay;        int[][] day = {{0,31,28,31,30,31,30,31,31,30,31,30,31},                        {0,31,29,31,30,31,30,31,31,30,31,30,31}};        if(year%4==0 && year%100!=0 || year%400==0){            //闰年            monthDay = day[1][month];        } else{            monthDay = day[0][month];        }        return monthDay;    }    public void printWeekTitle(){         System.out.println("日"+"     "+"一"+"     "+"二"+"    "+"三"+"    "+"四"+"     "+"五"+"     "+"六");    }}

运行结果截图(运行效果,字体大小5号最佳):
运行效果,字体大小5号最佳

0 0
原创粉丝点击