Java日历表

                  效果图    
import java.util.*;
import java.text.*;
class demo 
{
    public static void main(String[] args) 
    {
        //创建一个输入对象
        Scanner scan = new Scanner(System.in);
        //以1900-1-1为时间参考点
        String str = "1900-1-1";
        System.out.println("请输入年月(年-月):");
        //输入
        String str1 = scan.next();
        
        //拼接一个表示日的字符串+"-1"
       String str2 = str1 + "-1";
        
       //调用此方法,会返回一个总的天数      总天数 = 现在的时间(yyyy-mm-dd) - 参考时间(1900-1-1)
       long days = charge(str,str2);
        
       //总的天数对7取余+1,就得到每个月的1号是星期几
        long week = days%7+1;
        
       //截取字符串,会把输入的月份截取出来
        String str4 = str1.substring(5);
        
       //把截取出来的月份转换成int类型的数据
        int num = Integer.valueOf(str4); 
        
       //截取年份,用来判断是否是闰年
        String str5 = str1.substring(0,4);
        
       //把截取的年份转换成int类型的数据
        int num1 = Integer.valueOf(str5);
        
       //调用此方法会返回你输入的月份的天数
        int dayNum = number(num,num1);
        
       //用于打印日历表
        print(week,dayNum);
    }

    public static int number(int num,int num1){
        int day = 0;
        switch (num)
        {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            day = 31;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            day = 30;
            break;
        case 2:
            {
                //判断是否为闰年
                if ((num1%4 == 0 && num1%100 != 0) || num1 % 400 ==0)
                {
                    day = 29;
                }else {
                    day = 28;
                }
            }
            break;
        }
        return day;
    }
    //打印日历表
    public static void print(long b,int c){
        System.out.println("星期一\t"+"星期二\t"+"星期三\t"+"星期四\t"+"星期五\t"+"星期六\t"+"星期日");
        for (int i = 1; i < b ; i++)
        {
            if (i % 7 == 0)
            {
                System.out.println();
            }
            System.out.print("  *"+"\t");
        }
        int d=0;
        for (int i = (int)b ; i < c+(int)b ; i++ )
        {
            d++;
            if ((i-1) % 7 == 0 && i != 1)
            {
                System.out.println();
            }
            System.out.print("  "+d+"\t");
        }
    }
    //计算两个时间差,返回天数
    public static long charge(String date1,String date2){
        //做时间差
        //将String转为Date做计算yyyy-mm-dd是格式
        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
       long charge = 0;
       try{
            Date d1 = sd.parse(date1);  
            Date d2 = sd.parse(date2);
            //时间也是以毫秒为单位。
              charge = (d2.getTime() - d1.getTime()) / (1000*24*60*60);
          }catch(ParseException e){
            System.out.println(e);
       }
         return charge;
    }
}

原文地址:https://www.cnblogs.com/12kk/p/6100439.html