Calendar类实现当前日期的日历

package com.sxt.home1;

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

public class Test2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入日期:如 2017-4-20");
        String s = input.nextLine();
        //String s = "2017-4-20";//字符串日期
        
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");//新建日期格式化对象
        try {
            Date date = df.parse(s);//String-->Date
            //Calendar cal = new GregorianCalendar();//方式一:新建Calendar对象 多态 GregorianCalendar:公历
            Calendar cal = Calendar.getInstance();//方式二:新建Calendar对象
            cal.setTime(date);//设置 Calendar 的时间
            int day = cal.get(Calendar.DATE);// 记录当前几号  Calendar.DATE : 指示一个月中的某天,与 DAY_OF_MONTH 是同义词
            //System.out.println(day);
            
            cal.set(Calendar.DATE, 1);//设置从一号开始
            System.out.println("一	二	三	四	五	六	日");//打印星期
            int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);//获取当前日期一周中的第几天!
            //System.out.println(dayOfWeek);
//(周日为第一天)一周第几天  前空格个数
//               1      6
//               2      0
//               3      1
//               4      2
//               5      3
//               6      4
//               7      5
            if(dayOfWeek >= 2){
                for(int i=1; i<=(dayOfWeek-2); i++){
                    System.out.print("	");//打印1号之前的空格
                }
            }else{
                for(int i=1; i<=6; i++){
                    System.out.print("	");//打印1号之前的空格
                }
            }
            int monthDays = cal.getActualMaximum(Calendar.DATE);//获取当月的最大天数
            for(int i=1; i<=monthDays; i++){
                if(i == day){
                    System.out.print("*");//如果是当前日  打印*
                }
                System.out.print(i+"	");//显示一个月的每一天
                
                int j = cal.get(Calendar.DAY_OF_WEEK);//获取当前日期一周中的第几天!
                if(j == Calendar.SUNDAY){//周日即第1天换行(j==1)
                    System.out.println();
                }
                cal.add(Calendar.DATE, 1); //Calendar对象  添加指定的时间量
            }
            
            
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    }
}
原文地址:https://www.cnblogs.com/qingfengzhuimeng/p/6743539.html