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(); } } }