版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、JAVA 時間格式化處理日期格式化class dayTimepublic static void main(String args)Date nowTime=new Date();1、通過 MessageFormat轉化StringdateTime =MessageFormat.format("0,date,yyyy-MM-dd-HH-mm:ss:ms" ,new Object);說明 :yyyy-MM-dd-HH-mm:ss:ms進制 ,小寫為 12 進制 )分 mm 秒ss年 yyyy微妙 ms月 MM日dd時(大寫為242、修改數(shù)據(jù)庫時用3、通過 SimpleDate
2、Format轉化SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd"); /格式化當前系統(tǒng)日期4、具體討論Java 語言的 Calendar( 日歷 ),Date( 日期 ), 和 DateFormat( 日期格式 )組成了 Java標準的一個基本但是非常重要的部分 . 日期是商業(yè)邏輯計算一個關鍵的部分 . 所有的開發(fā)者都應該能夠計算未來的日期 , 定制日期的顯示格式 , 并將文本數(shù)據(jù)解析成日期對象 . 我們寫了兩篇文章 , 這是第一篇 , 我們將大概的學習日期 , 日期格式 , 日期的解析和日期的計算 .我
3、們將討論下面的類 :1、具體類 (和抽象類相對2、抽象類和它的一個具體子類3、抽象類和它的一個具體子類 具體類可以被實例化 , 但是抽象類卻不能 . 你首先必須實現(xiàn)抽象類的一個具體子類 .Date 類從 Java 開發(fā)包 (JDK) 1.0 就開始進化 , 當時它只包含了幾個取得或者設置一個日期數(shù)據(jù)的各個部分的方法 , 比如說月 , 日, 和年 . 這些方法現(xiàn)在遭到了批評并且已經(jīng)被轉移到了Calendar 類里去了 , 我們將在本文中進一步討論它.這種改進旨在更好的處理日期數(shù)據(jù)的國際化格式. 就象在 JDK 1.1 中一樣 , Date類實際上只是一個包裹類, 它包含的是一個長整型數(shù)據(jù), 表示
4、的是從 GMT( 格林尼治標準時間 )1970 年, 1 月 1 日 00:00:00 這一刻之前或者是之后經(jīng)歷的毫秒數(shù) .一、創(chuàng)建一個日期對象讓我們看一個使用系統(tǒng)的當前日期和時間創(chuàng)建一個日期對象并返回一個長整數(shù)的簡單例子 . 這個時間通常被稱為 Java 虛擬機 (JVM) 主機環(huán)境的系統(tǒng)時間 . /-public class DateExample1public static void main(String args)/ Get the system date/time Date date = new Date();/-在星期六 , 2001 年 9 月 29 日, 下午大約是 6:50
5、 的樣子 , 上面的例子在系統(tǒng)輸出設備上顯示的結果是在這個例子中 ,值得注意的是我們使用了 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用戶明白的格式來顯示這個日期呢? 在這里類和它的抽象基類就派得上用場了 .二、日期數(shù)據(jù)的定制格式假如我們希望定制日期數(shù)據(jù)的格式, 比方星期六-9 月-29日-2001年.下面的例子展示了如何完成這個工作:/-public
6、class DateExample2public static void main(String args)SimpleDateFormat bartDateFormat =new SimpleDateFormat("EEEE-MMMM-dd-yyyy");Date date = new Date();/-只要通過向 SimpleDateFormat 的構造函數(shù)傳遞格式字符串 "EEE-MMMM-dd-yyyy", 我們就能夠指明自己想要的格式 . 你應該可以看見 , 格式字符串中的 ASCII 字符告訴格式化函數(shù)下面顯示日期數(shù)據(jù)的哪一個部分 .EEEE
7、 是星期 , 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ù) . 我們的例
8、子 , 顯示在下面 , 將解析文本字符串 "9-29-2001" 并創(chuàng)建一個值為 001736000000 的日期對象 ./-public class DateExample3public 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
9、 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.
10、parse(dateStringToParse);/ Now send the parsed date as a long value/catch (Exception ex) /-四、使用標準的日期格式化過程既然我們已經(jīng)可以生成和解析定制的日期格式了 , 讓我們來看一看如何使用內(nèi)建的格式化過程 . 方法 DateFormat.getDateTimeInstance() 讓我們得以用幾種不同的方法獲得標準的日期格式化過程 . 在下面的例子中 , 我們獲取了四個內(nèi)建的日期格式化過程 . 它們包括一個短的 , 中等的 , 長的 , 和完整的日期格式 ./-public class DateExam
11、ple4public 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.getDateT
12、imeInstance(DateFormat.LONG,DateFormat.LONG);DateFormat fullDateFormat =DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);/-注意我們在對 getDateTimeInstance 的每次調(diào)用中都傳遞了兩個值 . 第一個參數(shù)是日期風格 , 而第二個參數(shù)是時間風格 . 它們都是基本數(shù)據(jù)類型 int( 整型 ). 考慮到可讀性 , 我們使用了 DateFormat 類提供的常量 : SHORT, MEDIUM, LONG, 和 FULL. 要知道獲取時
13、間和日期格式化過程的更多的方法和選項 , 請看 Sun 公司 Web 站點上的解釋 .運行我們的例子程序的時候, 它將向標準輸出設備輸出下面的內(nèi)容:9/29/01 8:44 PMSep 29, 2001 8:44:45 PMSeptember 29, 2001 8:44:45 PM EDTSaturday, September 29, 2001 8:44:45 PM EDT五、 Calendar類我們現(xiàn)在已經(jīng)能夠格式化并創(chuàng)建一個日期對象了, 但是我們?nèi)绾尾拍茉O置和獲取日期數(shù)據(jù)的特定部分呢 , 比如說小時些部分加上或者減去值呢 ? 答案是使用樣 , Calendar 類中的方法替代了 Date,
14、 日 , 或者分鐘 ? 我們又如何在日期的這Calendar 類. 就如我們前面提到的那類中被人唾罵的方法 .假設你想要設置 , 獲取 , 和操縱一個日期對象的各個部分 , 比方一個月的一天或者是一個星期的一天 . 為了演示這個過程 , 我們將使用具體的子類考慮下面的例子 , 它計算得到下面的第十個星期五是 13 號./-public class DateExample5public static void main(String args)DateFormat dateFormat =DateFormat.getDateInstance(DateFormat.FULL);/ Create o
15、ur Gregorian Calendar. GregorianCalendar cal = new GregorianCalendar();/ Set the date and time of our calendar/ to the system&s date and timecal.setTime(new Date();dateFormat.format(cal.getTime();/ Set the day of week to FRIDAY cal.set(GregorianCalendar.DAY_OF_WEEK,GregorianCalendar.FRIDAY);date
16、Format.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+;/-在這
17、個例子中我們作了有趣的函數(shù)調(diào)用:cal.set(GregorianCalendar.DAY_OF_WEEK,GregorianCalendar.FRIDAY);和 :cal.add(GregorianCalendar.DAY_OF_MONTH, 7);set 方法能夠讓我們通過簡單的設置星期中的哪一天這個域來將我們的時間調(diào)整為星期五 . 注意到這里我們使用了常量 DAY_OF_WEEK 和 FRIDAY 來增強代碼的可讀性 . add 方法讓我們能夠在日期上加上數(shù)值 . 潤年的所有復雜的計算都由這個方法自動處理 .我們這個例子的輸出結果是:System Date: Saturday, Sept
18、ember 29, 2001當我們將它設置成星期五以后就成了: Friday, September 28, 2001Friday, September 13, 2002Friday, December 13, 2002Friday, June 13, 2003Friday, February 13, 2004Friday, August 13, 2004Friday, May 13, 2005Friday, January 13, 2006Friday, October 13, 2006Friday, April 13, 2007Friday, July 13, 2007Friday, Jun
19、e 13, 2008六、時間掌握在你的手里有了這些 Date 和 Calendar 類的例子 , 你應該能夠使用和創(chuàng)建許多方法了 .5、具體討論 2這里只討論 java 中對日期的幾個簡單類:1.java.util.Date2.java.text.DateFormat ( Abstract ), java.text.SimpleDateFormat3.java.util.Calendar ( Abstract ), java.util 。 GregorianCalendar首先看一下 Date 類,Date 中只提供了幾個獲得本地時間的方法,具體用法見下:;public class DateF
20、ormatTest public DateFormatTest() public static void main(String args) Date dt=new Date() ;String localeString=dt.toLocaleString();String gmtString=dt.toGMTString();輸出結果為:2004-12-31 9:34:0431 Dec 2004 01:34:04 GMT從結果中可以看到, dt.getTime() 與 System.currentTimeMillis() 這兩個方法得到的時間是相同的。因為 Date 的構造函數(shù)中調(diào)用了 Sy
21、stem.currentTimeMillis() 方法來從系統(tǒng)獲得當前時間。 其結果實際上是從 1970 年 1 月 1 日開始到當前所經(jīng)歷的毫秒數(shù)。以下的例子展示的是一個簡單的格式化日期的代碼:;public class DateFormatTest public DateFormatTest() public static void main(String args) DateFormat df=DateFormat.getDateInstance();SimpleDateFormat defaultSDF=new SimpleDateFormat();SimpleDateFormat s
22、df=new SimpleDateFormat("yyyy-MM-dd");輸出結果是:Fri Dec 31 09:48:19 CST 20042004-12-3104-12-31上午 9:482004-12-31SimpleDateFormat的構造函數(shù)中 String 中字符的含義列如下表:Letter Date or Time Component Presentation ExamplesG Era designator Text ADy Year Year 1996 ; 96M Month in year Month July; Jul ; 07w Week in year Number 27W Week in month Number 2D Day in year Number 189d Day in month Number
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游行業(yè)景點評級標準
- 手術中的電生理監(jiān)測
- 自制禮物課件教學課件
- 河南省2024九年級語文上冊第二單元8就英法聯(lián)軍遠征中國致巴特勒上尉的信課件新人教版
- 慢病調(diào)理中心介紹
- 消防演練總結講評
- 農(nóng)業(yè)物聯(lián)網(wǎng)導論
- 感恩課件英文教學課件
- 玉米灰斑病病害循環(huán)
- 氣管切開燒傷病人的護理
- 2024產(chǎn)學研合作框架協(xié)議
- 申請銀行減免利息的申請書2
- 《剪映專業(yè)版:短視頻創(chuàng)作案例教程(全彩慕課版)》 課件 第6章 創(chuàng)作生活Vlog
- 重大事故隱患判定標準與相關事故案例培訓課件
- 公安行政執(zhí)法綜合實訓智慧樹知到期末考試答案章節(jié)答案2024年南京警察學院
- 火龍罐綜合灸療法
- 深圳市中小學生流感疫苗接種知情同意書
- 數(shù)據(jù)、模型與決策(運籌學)課后習題和案例答案007
- 機電控制工程基礎實驗報告
- 實驗室安全管理流程圖3)
- 校園心理劇劇本
評論
0/150
提交評論