1 package Format_daqo;
2
3 import java.text.SimpleDateFormat;
4 import java.util.Calendar;
5 import java.util.Date;
6 import java.util.Scanner;
7
8 /**
9 * 1、第一行的7个格子里放星期几
10 2、第二行的7个格子里分别放啥?
11 根据输入的日期判断:
12 如果对应月份的第1天是星期一,则第二行的每个格子里打印对应的天数
13 如果对应月份的第1天是星期二,则第二行的第1个格子里放空格,其他格子里放天数
14 如果对应月份的第1天是星期三,则第二行的第1~2个格子里放空格,其他格子里放天数
15 如果对应月份的第1天是星期四,则第二行的第1~3个格子里放空格,其他格子里放天数
16 如果对应月份的第1天是星期五,则第二行的第1~4个格子里放空格,其他格子里放天数
17 如果对应月份的第1天是星期六,则第二行的第1~5个格子里放空格,其他格子里放天数
18 如果对应月份的第1天是星期天,则第二行的第1~6个格子里放空格,其他格子里放天数
19 3、假设对应的月份总共有30天,则一共需要放30个数字,每行放满后,从新的一行开始放
20 * @author frank
21 *
22 */
23 public class Calendar_Frank2 {
24 static int count;//用来统计放了多少次空格或数字
25 static void printSpace(int c){
26 for(int i=0;i<c;i++){
27 System.out.print(" "+"\t");
28 count++;
29 }
30 }
31
32 public static void main(String[] args) throws Exception {
33 System.out.println("请输入日期(格式为yyyy-MM-dd):");
34 Scanner scan = new Scanner(System.in);
35 String str = scan.next();
36 //
37 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
38 Date date = sdf.parse(str);
39 //
40 Calendar cal = Calendar.getInstance();
41 //将cal表示的时间修改成date所表示的时间
42 cal.setTime(date);
43
44 System.out.println("星期一"+"\t"+"星期二"+"\t"+"星期三"+"\t"+"星期四"+"\t"+"星期五"+"\t"+"星期六"+"\t"+"星期日");
45
46 int day = cal.get(Calendar.DAY_OF_MONTH); //获取cal所表示的天,即输入的那一天(比如2015-12-22,就是22)
47
48 cal.set(Calendar.DAY_OF_MONTH, 1);//
49
50 int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);//获取这个月有多少天 30
51
52 //该月的第一天是周几
53 switch(cal.get(Calendar.DAY_OF_WEEK)){
54 case 1://代表国外的周日
55 printSpace(6);
56 break;
57 case 2://代表国外的周一
58 break;
59 case 3://代表国外的周二
60 printSpace(1);
61 break;
62 case 4://代表国外的周三
63 printSpace(2);
64 break;
65 case 5://代表国外的周四
66 printSpace(3);
67 break;
68 case 6://代表国外的周五
69 printSpace(4);
70 break;
71 case 7://代表国外的周六
72 printSpace(5);
73 }
74 for(int i=1;i<=days;i++){
75 if(i==day){
76 System.out.print(i+"*\t");
77 }else{
78 System.out.print(i+"\t");
79 }
80 count++;
81 if(count%7==0){
82 System.out.print("\n");
83 }
84 }
85 scan.close();
86 }
87 }