public class VisualCalendar { public static void main(String[]args){ System.out.println("请输入日期(按照格式2001-01-03):"); Scanner s=new Scanner(System.in); String a=s.nextLine();//输入一个时间,以字符串的格式; DateFormat b=new SimpleDateFormat("yyyy-MM-dd");//两者格式要相等; try { Date c=b.parse(a);//核心代码: 把字符串转为时间!!!! Calendar d=new GregorianCalendar(); d.setTime(c);//这三行代码是为了把字符串转换为calendar类目的是变成计算机能处理的日期 int today=d.get(Calendar.DATE); d.set(Calendar.DATE, 0);//初始化,让输入的数是1号; //System.out.println(d.get(Calendar.DAY_OF_WEEK));输入的日期1号是星期几 //System.out.println(d.getActualMaximum(Calendar.DATE));日期所在的月份的最大天数; System.out.println("日\t一\t二\t三\t四\t五\t六"); for(int i=0;i<d.get(Calendar.DAY_OF_WEEK);i++){//1号在星期几,前面的都打印空字符; System.out.print("\t"); } for(int i=1;i<=d.getActualMaximum(Calendar.DATE);i++){//打印本月的天数 if(i==today){ System.out.print("*");//把今天用*表示出来 } System.out.print(i+"\t"); int w=d.get(Calendar.DAY_OF_WEEK);//获得星期几; if(w==6)//如果是星期6则换行; { System.out.println(); } d.add(Calendar.DATE,1);//循环一次+一天; } } catch (ParseException e) { // TODO Auto-generated catch block自动填写捕获异常; e.printStackTrace(); } } }