java返回一个简单的日历

 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("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
40       for(int i=1;i<sumDays+1+week;i++){    //加上星期几的个数,然后前面打上空格,week+1是因为最左边是星期日
41           if(i<=week){
42             System.out.printf("\t");
43           }else{
44            System.out.printf("%4d\t",i-week);
45           }
46        if(i%7==0&&i!=0){
47          System.out.printf("\n");   //逢7就换行
48         }
49        }
50      }
51 
52     public static void main(String[] args){
53       traverse();
54     }
55 }

 效果图上:

 

posted @ 2016-11-19 20:21  込戲冭氵罙  阅读(532)  评论(0编辑  收藏  举报