import java.text.*; //首先得导包
import java.util.*;
public class hw2
{
/**
* 计算日期差 返回的天数
* @param dstr1 第一个日期
* @param dstr2 第二个日期
*
*/
public static long charge(String dstr1,String dstr2){
long charge=0;
SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");
try {
Date d1=sd.parse(dstr1);
Date d2=sd.parse(dstr2);
charge=(d2.getTime()-d1.getTime())/(24*60*60*1000);
} catch (ParseException e) {
e.printStackTrace(); //异常的话就执行到这里
}
return charge;
} //遍历日期的方法
public static void traverse(){
String date = "1970-1-1"; //星期四 ---基准时间
// String date1 = "2016-11-1";
Scanner input = new Scanner(System.in);
System.out.println("请输入一个日期查看日历:格式是:yyyy-mm-dd:");
String date1 = input.next();
//通过xxx来分隔字符串,并且保存在一个字符串数组中 字符串.split("分隔符");
String[] d = date1.split("-"); //然后取出第二个数组元素,也就是月份
long week = (charge(date,date1)+4)%7==0?1:(charge(date,date1)+4)%7; //计算出今天是星期几
//Integer.parseInt(字符串) 将字符串转成 Integer类型
Integer temp = (Integer.parseInt(d[1])+1)%13==0?1:(Integer.parseInt(d[1])+1)%13;//将下一个月份算出来
String nextMonth = d[0]+"-"+temp+"-"+"1"; //拼出下一个月的日期
long sumDays = charge(date1,nextMonth);
System.out.println("今天是星期:"+week);
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
for(int i=1;i<sumDays+1+week;i++){ //加上星期几的个数,然后前面打上空格,week+1是因为最左边是星期日
if(i<=week){
System.out.printf("\t");
}else{
System.out.printf("%4d\t",i-week);
}
if(i%7==0&&i!=0){
System.out.printf("\n"); //逢7就换行
}
}
} public static void main(String[] args){
traverse();
}
}
效果图上: