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("日\t一\t二\t三\t四\t五\t六");
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("\t");
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