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("日\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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM