Java打印日历

 1 import java.text.ParseException;
 2 import java.text.SimpleDateFormat;
 3 import java.util.Calendar;
 4 import java.util.Date;
 5 import java.util.GregorianCalendar;
 6 import java.util.Scanner;
 7 
 8 
 9 public class PrinTime {
10 
11     /**
12      * @param args
13      */
14     public static void main(String[] args) {
15         Scanner input = new Scanner(System.in);
16         
17         String dateString = "";        //日期字符串
18         System.out.print("请输入年份:");
19         dateString += input.next();
20         System.out.print("请输入月份:");
21         dateString += "-" + input.next();
22         
23         //创建日期格式对象,以便获得Date类型的日期,构造函数参数是自定义格式,年-月
24         SimpleDateFormat dateFormat = new SimpleDateFormat("yy-MM");
25         Date datitime = null;
26         try {
27             datitime = dateFormat.parse(dateString);//根据SimpleDateFormat对象的parse方法获得Date类型的日期,方法参数是日期字符串
28         } catch (ParseException e) {
29             // TODO Auto-generated catch block
30             e.printStackTrace();
31         }
32         //创建日历对象
33         Calendar calendar = new GregorianCalendar();
34         //设置此日历对象的日期
35         calendar.setTime(datitime);
36         //创建数组保存日期,一个日期最多6行7列
37         int dateTimes[] = new int[6*7];
38         
39         //给日期数组赋值,根据GregorianCalendar对象的getActualMaximum方法获得该月的最大天数,该方法的参数是GregorianCalendar对象的日期
40         //getActualMaximum自动判断最大日期
41         for (int i = 1; i <= calendar.getActualMaximum(calendar.DATE); i++) {
42             /*
43              * 从该日历1号在一周中的天数后开始赋值
44              * Calendar对象的get方法获得的日期在一周中的天数会比我们的多一天,应是外国喜欢每周周日是第一天
45              * 数组索引从0开始,所以要-1再-1
46              * */
47             dateTimes[i+calendar.get(calendar.DAY_OF_WEEK)-1-1] = i;
48         }
49         //打印输出
50         System.out.println("日	一	二	三	四	五	六");
51         for (int i = 0; i < dateTimes.length; i++) {
52             //从该日历1号在一周中的天数后开始打印
53             if (dateTimes[i] != 0) {
54                 System.out.print(dateTimes[i]);
55             }
56             System.out.print("	");
57             //每打印一周的日期就换行
58             if ((i+1) %7 == 0) {
59                 System.out.println("");
60             }
61         }
62     }
63 
64 }
欢迎提出意见或建议!!!
原文地址:https://www.cnblogs.com/gaofei-1/p/6543737.html