javaGrowing

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            92 隨筆 :: 33 文章 :: 49 評論 :: 0 Trackbacks
          Date 類實際上只是一個包裹類, 它包含的是一個長整型數(shù)據(jù), 表示的是從GMT(格林尼治標準時間)1970年, 1 月 1日00:00:00這一刻之前或者是之后經(jīng)歷的毫秒數(shù).
          創(chuàng)建一個日期對象
          讓我們看一個使用系統(tǒng)的當前日期和時間創(chuàng)建一個日期對象并返回一個長整數(shù)的簡單例子. 這個時間通常被稱為Java 虛擬機(JVM)主機環(huán)境的系統(tǒng)時間.?
          import?java.util.Date;?
          public?class?DateExample1?
          {?????
          public?static?void?main(String[]?args)?
          ??
          {???
          ?????
          //?Get?the?system??date/time????
          ?????Date?date?=?new?Date();?????
          ?????System.
          out.println(date.getTime());?????
          ??}
          ?
          }
          ?
          在星期六, 2001年9月29日, 下午大約是6:50的樣子, 上面的例子在系統(tǒng)輸出設備上顯示的結果是 1001803809710. 在這個例子中,值得注意的是我們使用了Date 構造函數(shù)創(chuàng)建一個日期對象, 這個構造函數(shù)沒有接受任何參數(shù). 而這個構造函數(shù)在內(nèi)部使用了System.currentTimeMillis() 方法來從系統(tǒng)獲取日期.

          那么, 現(xiàn)在我們已經(jīng)知道了如何獲取從1970年1月1日開始經(jīng)歷的毫秒數(shù)了. 我們?nèi)绾尾拍芤砸环N用戶明白的格式來顯示這個日期呢? 在這里類java.text.SimpleDateFormat 和它的抽象基類 java.text.DateFormat 就派得上用場了.


          日期數(shù)據(jù)的定制格式
          假如我們希望定制日期數(shù)據(jù)的格式, 比方星期六-9月-29日-2001年. 下面的例子展示了如何完成這個工作:
          import?java.text.SimpleDateFormat;?
          import?java.util.Date;?
          public?class?DateExample2?
          {?????
          public?static?void?main(String[]?args)?
          {?
          SimpleDateFormat?bartDateFormat?
          =???????????new?SimpleDateFormat("EEEE-MMMM-dd-yyyy");????????
          ?Date?date?
          =?new?Date();?????????System.out.println(bartDateFormat.format(date));????
          ?}

          ?}

          只要通過向SimpleDateFormat 的構造函數(shù)傳遞格式字符串"EEE-MMMM-dd-yyyy", 我們就能夠指明自己想要的格式. 你應該可以看見, 格式字符串中的ASCII 字符告訴格式化函數(shù)下面顯示日期數(shù)據(jù)的哪一個部分. EEEE是星期, MMMM是月, dd是日, yyyy是年. 字符的個數(shù)決定了日期是如何格式化的.傳遞"EE-MM-dd-yy"會顯示 Sat-09-29-01. 請察看Sun 公司的Web 站點獲取日期格式化選項的完整的指示.

          將文本數(shù)據(jù)解析成日期對象
          假設我們有一個文本字符串包含了一個格式化了的日期對象, 而我們希望解析這個字符串并從文本日期數(shù)據(jù)創(chuàng)建一個日期對象. 我們將再次以格式化字符串"MM-dd-yyyy" 調(diào)用SimpleDateFormat類, 但是這一次, 我們使用格式化解析而不是生成一個文本日期數(shù)據(jù). 我們的例子, 顯示在下面, 將解析文本字符串"9-29-2001"并創(chuàng)建一個值為001736000000 的日期對象.

          例子程序:
          import?java.text.SimpleDateFormat;?
          import?java.util.Date;?
          public?class?DateExample3?{?????
          public?static?void?main(String[]args)?{?
          ????
          //?Create?a?date?formatter?that?can?parse?dates?of??the?form?MM-dd-yyyy.???????
          ??SimpleDateFormat?bartDateFormat?=?new?SimpleDateFormat("MM-dd-yyyy");?????????
          //?Create?a?string?containing?a?text?date?to?be?parsed.????????
          ?String?dateStringToParse?=?"9-29-2001";?????????
          try?{???????????
          ??
          //?Parse?the?text?version?of?the?date.????????????
          ?
          //?We?have?to?perform?the?parse?method?in?a???????????
          ??
          //?try-catch?construct?in?case?dateStringToParse????????????
          ?
          //?does?not?contain?a?date?in?the?format?we?are?expecting.???????????
          ??Date?date?=?bartDateFormat.parse(dateStringToParse);????????????
          ?
          //?Now?send?the?parsed?date?as?a?long?value????????????
          ?
          //?to?the?system?output.????????????
          ????System.out.println(date.getTime());?????????
          ?}
          ?????????
          catch?(Exception?ex)?
          ????
          {????????????
          ??????????System.
          out.println(ex.getMessage());?????????}
          ???
          ????}
          ?
          }
          ?

          使用標準的日期格式化過程
          既然我們已經(jīng)可以生成和解析定制的日期格式了, 讓我們來看一看如何使用內(nèi)建的格式化過程. 方法 DateFormat.getDateTimeInstance() 讓我們得以用幾種不同的方法獲得標準的日期格式化過程. 在下面的例子中, 我們獲取了四個內(nèi)建的日期格式化過程. 它們包括一個短的, 中等的, 長的, 和完整的日期格式.
          import?java.text.DateFormat;?
          import?java.util.Date;?
          public?class?DateExample4?{?????
          public?static?void?main(String[]?args)?

          {??
          ???Date?date?
          =?new?Date();?????????
          DateFormat?shortDateFormat?
          =?DateFormat.getDateTimeInstance(??DateFormat.SHORT,?DateFormat.SHORT);???????
          ???DateFormat?mediumDateFormat?
          =?DateFormat.getDateTimeInstance(?DateFormat.MEDIUM,DateFormat.MEDIUM);?????????
          ???DateFormat?longDateFormat?
          =?????????DateFormat.getDateTimeInstance(?????????DateFormat.LONG,?????????DateFormat.LONG);????????
          ???DateFormat?fullDateFormat?
          =?????????DateFormat.getDateTimeInstance(?????????DateFormat.FULL,?????????DateFormat.FULL);????????
          ???System.
          out.println(shortDateFormat.format(date));?????????
          ???System.
          out.println(mediumDateFormat.format(date));?????????
          ???System.
          out.println(longDateFormat.format(date));?????????
          ???System.
          out.println(fullDateFormat.format(date));????
          ?}
          ?
          }
          ?

          注意我們在對 getDateTimeInstance的每次調(diào)用中都傳遞了兩個值. 第一個參數(shù)是日期風格, 而第二個參數(shù)是時間風格. 它們都是基本數(shù)據(jù)類型int(整型). 考慮到可讀性, 我們使用了DateFormat 類提供的常量: SHORT, MEDIUM, LONG, 和 FULL. 要知道獲取時間和日期格式化過程的更多的方法和選項, 請看Sun 公司W(wǎng)eb 站點上的解釋.

          運行我們的例子程序的時候, 它將向標準輸出設備輸出下面的內(nèi)容:
          9/29/01 8:44 PM
          Sep 29, 2001 8:44:45 PM
          September 29, 2001 8:44:45 PM EDT
          Saturday, September 29, 2001 8:44:45 PM EDT
          posted on 2005-09-06 15:04 javaGrowing 閱讀(14294) 評論(2)  編輯  收藏 所屬分類: jsp

          評論

          # re: Java中Date類的應用[未登錄] 2013-05-09 13:23 222
          11111111111111111111  回復  更多評論
            

          # re: Java中Date類的應用[未登錄] 2014-12-25 12:30 菜鳥
          對對對  回復  更多評論
            

          主站蜘蛛池模板: 琼中| 溧阳市| 二连浩特市| 错那县| 皮山县| 会昌县| 宜宾市| 西盟| 腾冲县| 仁化县| 安丘市| 乌恰县| 云和县| 临夏县| 伊川县| 彝良县| 莱西市| 平乐县| 酒泉市| 东丽区| 铜山县| 静安区| 新龙县| 格尔木市| 林口县| 上犹县| 佳木斯市| 莒南县| 平乐县| 江孜县| 志丹县| 雷州市| 县级市| 钦州市| 上高县| 文水县| 四川省| 浦东新区| 墨江| 安徽省| 彩票|