1 package cn.zhang.test; 2 3 import java.text.DateFormat; 4 import java.text.ParseException; 5 import java.text.SimpleDateFormat; 6 import java.util.Calendar; 7 import java.util.Date; 8 import java.util.GregorianCalendar; 9 import java.util.Scanner; 10 11 /** 12 * 可视化日历程序 13 * @author 张涛 14 * 15 */ 16 public class TestCalendar_2 { 17 18 public static void main(String[] args) throws ParseException { 19 20 Scanner sc = new Scanner(System.in); 21 System.out.println("请输入时间,格式如下 (2019-8-20):"); 22 String str = sc.nextLine(); 23 24 //第一步先将字符串按照"格式字符串指定格式"转化为时间对象 25 DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 26 Date d = df.parse(str); 27 //System.out.println(d); 28 29 //将字符串转化为时间对象之后,再将时间对象转化为日期类对象 30 Calendar c = new GregorianCalendar(); 31 c.setTime(d); 32 //System.out.println(c); 33 34 //打印格式 35 System.out.println("日 一 二 三 四 五 六"); 36 37 int day = c.get(Calendar.DATE); 38 39 //将月中天数从1开始记录 40 c.set(Calendar.DAY_OF_MONTH,1); 41 42 //将1号与相应的星期几对应起来 43 for(int i=0; i<c.get(Calendar.DAY_OF_WEEK)-1; i++) { 44 System.out.print(" "); 45 } 46 47 //获得本月的天数 48 int days = c.getActualMaximum(Calendar.DATE); 49 50 for(int i=1; i<=days;i++) { 51 52 if(day == c.get(Calendar.DATE) ) { 53 54 System.out.print(c.get(Calendar.DATE)+"* "); 55 56 }else { 57 58 System.out.print(c.get(Calendar.DATE)+" "); 59 60 } 61 62 //星期六开始换行 63 if(c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) { 64 65 System.out.println(); 66 67 } 68 //天数自增 69 c.add(Calendar.DAY_OF_MONTH, 1); 70 71 } 72 73 } 74 75 }