1 import java.text.*; //首先得导包 2 import java.util.*; 3 public class hw2 4 { 5 /** 6 * 计算日期差 返回的天数 7 * @param dstr1 第一个日期 8 * @param dstr2 第二个日期 9 * 10 */ 11 public static long charge(String dstr1,String dstr2){ 12 long charge=0; 13 SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd"); 14 try { 15 Date d1=sd.parse(dstr1); 16 Date d2=sd.parse(dstr2); 17 charge=(d2.getTime()-d1.getTime())/(24*60*60*1000); 18 } catch (ParseException e) { 19 e.printStackTrace(); //异常的话就执行到这里 20 } 21 return charge; 22 } 23 24 //遍历日期的方法 25 public static void traverse(){ 26 String date = "1970-1-1"; //星期四 ---基准时间 27 // String date1 = "2016-11-1"; 28 Scanner input = new Scanner(System.in); 29 System.out.println("请输入一个日期查看日历:格式是:yyyy-mm-dd:"); 30 String date1 = input.next(); 31 //通过xxx来分隔字符串,并且保存在一个字符串数组中 字符串.split("分隔符"); 32 String[] d = date1.split("-"); //然后取出第二个数组元素,也就是月份 33 long week = (charge(date,date1)+4)%7==0?1:(charge(date,date1)+4)%7; //计算出今天是星期几 34 //Integer.parseInt(字符串) 将字符串转成 Integer类型 35 Integer temp = (Integer.parseInt(d[1])+1)%13==0?1:(Integer.parseInt(d[1])+1)%13;//将下一个月份算出来 36 String nextMonth = d[0]+"-"+temp+"-"+"1"; //拼出下一个月的日期 37 long sumDays = charge(date1,nextMonth); 38 System.out.println("今天是星期:"+week); 39 System.out.println("星期日 星期一 星期二 星期三 星期四 星期五 星期六"); 40 for(int i=1;i<sumDays+1+week;i++){ //加上星期几的个数,然后前面打上空格,week+1是因为最左边是星期日 41 if(i<=week){ 42 System.out.printf(" "); 43 }else{ 44 System.out.printf("%4d ",i-week); 45 } 46 if(i%7==0&&i!=0){ 47 System.out.printf(" "); //逢7就换行 48 } 49 } 50 } 51 52 public static void main(String[] args){ 53 traverse(); 54 } 55 }
效果图上: