简单日历的两种方法

方法一:

import java.util.Calendar;

import java.util.Scanner;

 class Demo {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        System.out.print("请输入年份:");

        int year = scan.nextInt();

        System.out.print("请输入月份:");

        int month = scan.nextInt();

        System.out.println("

		"+year + "年" + month + "月

");

        System.out.println("周日	周一	周二	周三	周四	周五	周六");

        Calendar c = Calendar.getInstance();

 
        c.set(year, month-1, 1);

        int weekday = c.get(Calendar.DAY_OF_WEEK);

    

        int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);

        int temp = 0;


        for (int i = 1; i < weekday; i++){

            System.out.print("*	");

            temp++;

        }


        for (int i = 1; i <= maxDay; i++){

            System.out.print(i + "	");
            temp++;
            if (temp%7 == 0){
                    System.out.println();
            }

        }

    }

} 

 

方法二:

public class Demo4 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        Demo4 demo = new Demo4();
        demo.show(1900,1);

    }
    
    //定义一个工具方法:判断平年还是闰年
    public boolean isLeapYear(int year){
        
        if(year % 400 == 0 || (year % 4==0 && year % 100 != 0)){
            
            return true;
        }
        
       return false;
    }
    
    //计算输入年份下,月份的总天数 1900
    
    public int getTotalDateFrom(int year , int month){
        
        //1.定年份的总天数
        int totalDate = 0;//1900到你输入的年份的总天数 2016   1900 - 1903 = 3
        for(int i= 1900 ; i < year ;i++){
            
            if(isLeapYear(i)){ // 闰年
            
                totalDate += 366;
            }else {
                
                totalDate += 365;
            }
        }
        
        //2.计算月份的天数
        for(int i = 1 ; i< month ;i++){
            
            totalDate += getDayOfMonth(year, i);
        }
        
        return  totalDate;
        
    }
    
    
    
    public int getDayOfMonth(int year , int month){
        
        switch (month) {
        case 1:    
        case 3:    
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
                
            return 31;

        case 4:    
        case 6:    
        case 9:
        case 11:
             return 30;
        case 2:
            if(isLeapYear(year)){
                
                return 29;
            }else {
                
                return 28;
            }
        default:
            return 30;
        }
    }
    
    public int printSpace(int year , int month){
        
        return getTotalDateFrom(year, month) % 7;
    }
    
    public void print(int year , int month){
        
        int countSpac =  printSpace(year, month) + 1; // 空格的个数
        int count = 0; //定义一个计数
        for(int i = 1; i<=countSpac; i++){
            count++;
            System.out.print("	");
        }
        
        //2.打印日期
        for(int i = 1 ; i<=getDayOfMonth(year, month);i++){
            
            if(count % 7 == 0){
                
                System.out.println();
            }
            count++;
            System.out.print(i+"	");
            
        }
        
    }
    
    public  void show(int year , int month){
        
        System.out.println("******************"+year+"****"+month+"***************");
        System.out.println("======================================================");
        System.out.println("日	一	二	三	四	五	六");
        System.out.println("======================================================");
        print(year, month);
        System.out.println();
    }
    

}



 

原文地址:https://www.cnblogs.com/binzhihua-666/p/6103609.html