效果图
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; }}