我的Blog我做主^_^

          走向一條通往JAVA的不歸路...

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            64 隨筆 :: 68 文章 :: 77 評論 :: 0 Trackbacks
          Java中處理日期的類主要有Date、Calendar和DateFormat三個,在JDK中它們對應的包的位置和相關的派生類如下所示:?
          1、?Date:具體類java.util.Date?;?
          2、?Calendar:抽象類java.text.DateFormat,它派生的一個子類為java.text.SimpleDateFormat?
          3、?DateFormat:抽象類java.util.Calendar,它派生的一個子類為java.util.GregorianCalendar?
          (注:如果有朋友對具體類和抽象類不了解,可以參考相關Java資料)?

          現在對以上三個類進行如下分析:?

          一、對Date類的分析?

          Date?類從JDK?1.0開始進化,?當時它只包含了幾個簡單的處理日期數據的方法。?由于這些方法實用性差,現在基本上被Calendar類中各方法所代替了。這種改進目的是為了更好的處理日期數據國際化格式。?Date?類實際上只是一個包裹類,?它包含一個長整型數據,?表示的是從GMT(格林尼治標準時間)1970年,?1?月?1日00:00:00這一刻之前或者是之后經歷的毫秒數.?

          為了加深對Date類的理解,列舉如下一個簡單例子來說明Date的使用:?
          import?java.util.Date;?
          public?class?DateTest1?{?
          public?static?void?main(String[]?args)?{?
          /**?Get?the?system?Date?**/?
          Date?date?=?new?Date();?
          System.out.println(date.getTime());?
          }?
          }?
          系統輸出如下結果:?
          1001803809710?

          在這個例子中,值得我們注意的是我們使用了Date?構造函數創建一個日期對象,?在沒有任何參數的情況下,這個構造函數會自動調用System.currentTimeMillis()?方法來獲取當前系統日期.。?


          二、對DateFormat類的分析?

          如果我們希望定制日期數據的格式,?比如顯示的日期格式為:2006年06月23日,抽象類java.util.Calendar和它的子類java.util.GregorianCalendar能完成這一功能。?
          下面的例子展示了如何完成這個工作:?
          import?java.util.SimpleDateFormat;?
          import?java.util.Date;?
          public?class?DateTest2?{?
          public?static?void?main(String[]?args)?{?

          SimpleDateFormat?format?=?new?SimpleDateFormat("yyyy年MM月dd日",Locale.US);?
          Date?date?=?new?Date();?
          System.out.println(bartDateFormat.format(date));?
          }?
          }?

          只要通過向SimpleDateFormat?的構造函數傳遞格式字符串"?yyyy年MM月dd日",?我們就可以指明自己想要的格式.?其中yyyy是年,MM是月,?dd是日.?字符的個數決定了日期是如何格式化的,如果格式為"yyyy年MM月dd日"就會顯示?06年06月23日;如果是"yy-MM-dd"就顯示06-06-23。?

          三、對Calendar?類的分析?

          如果想設置、獲取、操縱一個日期對象的各個特定部分,比如獲得小時,?日,?分鐘、計算一個月的某一天說星期幾等等。這樣的情況就需要抽象類java.util.Calendar和它的子類來處理。為了能清楚地說明問題,列舉下面的例子,?它的功能是計算第十個星期五是13號.?

          import?java.util.GregorianCalendar;?
          import?java.util.Date;?
          import?java.text.DateFormat;?
          public?class?CalendarTest{?

          public?static?void?main(String[]?args)?{?
          DateFormat?dateFormat?=?DateFormat.getDateInstance(DateFormat.FULL);?
          GregorianCalendar?cal?=?new?GregorianCalendar();?

          /**?Set?the?date?and?time?of?our?calendar?to?the?system&s?date?and?time?**/?
          cal.setTime(new?Date());?
          System.out.println("System?Date:?"?+?dateFormat.format(cal.getTime()));?

          /**?Set?the?day?of?week?to?FRIDAY?**/?
          cal.set(GregorianCalendar.DAY_OF_WEEK,?GregorianCalendar.FRIDAY);?
          System.out.println("After?Setting?Day?of?Week?to?Friday:?"?+?
          dateFormat.format(cal.getTime()));?

          int?friday13Counter?=?0;?
          while?(friday13Counter?<=?10)?{?

          /**?Go?to?the?next?Friday?by?adding?7?days.?**/?
          cal.add(GregorianCalendar.DAY_OF_MONTH,?7);?

          /**?If?the?day?of?month?is?13?we?have?another?Friday?the?13th.?**/?
          if?(cal.get(GregorianCalendar.DAY_OF_MONTH)?==?13)?{?
          friday13Counter++;?
          System.out.println(dateFormat.format(cal.getTime()));?
          }?
          }?
          }?
          }?
          輸出結果是:?
          System?Date:?Saturday,?September?29,?2005?


          四、總結?

          在Java通過一下三個類的使用,一般可以滿足各種形式的日期使用。實際上,Java中日期使用的方法還有很多,如果有興趣的朋友請參考JDK幫助手冊。?
          http://www.javaresearch.org/article/55424.htm

          posted on 2007-03-21 09:57 java_蟈蟈 閱讀(275) 評論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 靖安县| 桐梓县| 青州市| 大安市| 焦作市| 汉沽区| 拜泉县| 宝丰县| 通城县| 龙南县| 洛宁县| 含山县| 涡阳县| 香港 | 吉安市| 福泉市| 东明县| 元氏县| 广宁县| 东乌珠穆沁旗| 嘉黎县| 长春市| 伊吾县| 峡江县| 治县。| 皮山县| 永和县| 宿州市| 红原县| 黄龙县| 嵩明县| 屯门区| 卓尼县| 和田县| 勐海县| 安岳县| 禹城市| 汽车| 桐梓县| 灌云县| 沙河市|