JAVA處理日期時間常用方法_第1頁
JAVA處理日期時間常用方法_第2頁
JAVA處理日期時間常用方法_第3頁
JAVA處理日期時間常用方法_第4頁
JAVA處理日期時間常用方法_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、JAVA處理日期時間常用方法: java.util.Calendar Calendar 類是一個抽象類,它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日歷字段之間的轉(zhuǎn)換提供了一些方法,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距歷元(即格林威治標(biāo)準(zhǔn)時間 1970 年 1 月 1 日的 00:00:00.000,格里高利歷)的偏移量。 例:Calendar cal = Calendar.getInstance()。/使用默認(rèn)時區(qū)和語言環(huán)境獲得一個日歷。 cal.add(Calendar.DAY_OF_MONTH, -

2、1)。/取當(dāng)前日期的前一天. cal.add(Calendar.DAY_OF_MONTH, +1)。/取當(dāng)前日期的后一天. /通過格式化輸出日期 java.text.SimpleDateFormat format = new java.text.SimpleDateFormat(yyyy-MM-dd)。 System.out.println(Today is:+format.format(Calendar.getInstance().getTime()。 System.out.println(yesterday is:+format.format(cal.getTime()。 得到2007-1

3、2-25日期: Calendar calendar = new GregorianCalendar(2007, 11, 25,0,0,0)。 1 / 13 Date date = calendar.getTime()。System.out.println(?7 Christmas is:+format.format(date)。 /java月份是從0-11,月份設(shè)置時要減1. /GregorianCalendar構(gòu)造方法參數(shù)依次為:年,月-1,日,時,分,秒. 取日期的部分: int year =calendar.get(Calendar.YEAR)。 int month=calendar.g

4、et(Calendar.MONTH)+1。 int day =calendar.get(Calendar.DAY_OF_MONTH)。 int hour =calendar.get(Calendar.HOUR_OF_DAY)。 int minute =calendar.get(Calendar.MINUTE)。 int seconds =calendar.get(Calendar.SECOND)。 取月份要加1.判斷當(dāng)前月份的最大天數(shù): Calendar cal = Calendar.getInstance()。 int day=cal.getActualMaximum(Calendar.DA

5、Y_OF_MONTH)。 System.out.println(day)。 java.util.Date 類 Date 表示特定的瞬間,精確到毫秒。從 JDK 1.1 開始,應(yīng)該使用 Calendar 類實現(xiàn)日期和時間字段之間轉(zhuǎn)換,使用 DateFormat 類來格式化和分析日期字符串。Date 中的相應(yīng)方法已廢棄。 盡管 Date 類打算反映協(xié)調(diào)世界時 (UTC),但無法做到如此準(zhǔn)確,這取決于 Java 虛擬機(jī)的主機(jī)環(huán)境。當(dāng)前幾乎所有操作系統(tǒng)都假定 1 天 = 24 60 60 = 86400 秒。但對于 UTC,大約每一兩年出現(xiàn)一次額外的一秒,稱為“閏秒”。閏秒始終作為當(dāng)天的最后一秒增加,

6、并且始終在 12 月 31 日或 6 月 30 日增加。例如,1995 年的最后一分鐘是 61 2 / 13 秒,因為增加了閏秒。大多數(shù)計算機(jī)時鐘不是特別的準(zhǔn)確,因此不能反映閏秒的差別。 在類 Date 所有可以接受或返回年、月、日期、小時、分鐘和秒值的方法中,將使用下面的表示形式: 年份 y 由整數(shù) y - 1900 表示。 月份由從 0 至 11 的整數(shù)表示;0 是一月、1 是二月等等;因此 ?11 是十二月。 日期(一月中的某天)按通常方式由整數(shù) 1 至 31 表示。 ?小時由從 0 至 23 的整數(shù)表示。因此,從午夜到 1 a.m. 的時間 ?是 0 點,從中午到 1 p.m. 的時間

7、是 12 點。 分鐘按通常方式由 0 至 59 的整數(shù)表示。 ?秒由 0 至 61 的整數(shù)表示;值 60 和 61 只對閏秒發(fā)生,盡管那 ?樣,也只用在實際正確跟蹤閏秒的 Java 實現(xiàn)中。于按當(dāng)前引入閏秒的方式,兩個閏秒在同一分鐘內(nèi)發(fā)生是極不可能的,但此規(guī)范遵循 ISO C 的日期和時間約定。 在所有情形中,針對這些目的賦予方法的參數(shù)不需要在指定的范圍內(nèi);例如,可以把日期指定為 1 月 32 日,并把它解釋為 2 月 1 日的相同含義。 java.util.Date today=new java.util.Date()。 System.out.println(Today is +format

8、s.format(today)。 3 / 13 取當(dāng)月的第一天: java.text.SimpleDateFormat format = new java.text.SimpleDateFormat(yyyy-MM-01)。 java.util.Date firstDay=new java.util.Date()。 System.out.println(he month first day is +formats.format(firstDay)。 取當(dāng)月的最后一天: Calendar cal = Calendar.getInstance()。 int maxDay=cals.getActua

9、lMaximum(Calendar.DAY_OF_MONTH)。 java.text.Format formatter3=new java.text.SimpleDateFormat(yyyy-MM-+maxDay)。 System.out.println(formatter3.format(cal.getTime()。 求兩個日期之間相隔的天數(shù): java.text.SimpleDateFormat format = new java.text.SimpleDateFormat(yyyy-MM-dd)。 java.util.Date beginDate= format.parse(?7-12

10、-24)。 java.util.Date endDate= format.parse(?7-12-25)。 long day=(date.getTime()-mydate.getTime()/(24*60*60*1000)。 祓瑳浥漮瑵瀮楲瑮湬尨相隔的天數(shù)=+day)。 一年前的日期: java.text.Format formatter=new java.text.SimpleDateFormat(yyyy-MM-dd)。 4 / 13 java.util.Date todayDate=new java.util.Date()。 long beforeTime=(todayDate.getT

11、ime()/1000)-60*60*24*365。 todayDate.setTime(beforeTime*1000)。 String beforeDate=formatter.format(todayDate)。 System.out.println(beforeDate)。 一年后的日期: java.text.Format formatter=new java.text.SimpleDateFormat(yyyy-MM-dd)。 java.util.Date todayDate=new java.util.Date()。 long afterTime=(todayDate.getTime

12、()/1000)+60*60*24*365。 todayDate.setTime(afterTime*1000)。 String afterDate=formatter.format(todayDate)。 System.out.println(afterDate)。 求10小時后的時間 java.util.Calendar Cal=java.util.Calendar.getInstance()。 Cal.setTime(dateOper)。 Cal.add(java.util.Calendar.HOUR_OF_DAY,10)。 System.out.println(date:+forma.

13、format(Cal.getTime()。 求10小時前的時間 5 / 13 java.util.Calendar Cal=java.util.Calendar.getInstance()。 Cal.setTime(dateOper)。 Cal.add(java.util.Calendar.HOUR_OF_DAY,-10)。 System.out.println(date:+forma.format(Cal.getTime()。 3.java.sql.Date 繼承自java.util.Date,是操作數(shù)據(jù)庫用的日期類型 一個包裝了毫秒值的瘦包裝器 (thin wrapper),它允許 JDB

14、C 將毫秒值標(biāo)識為 SQL DATE 值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以來經(jīng)過的毫秒數(shù)。為了與 SQL DATE 的定義一致,由 java.sql.Date 實例包裝的毫秒值必須通過將時間、分鐘、秒和毫秒設(shè)置為與該實例相關(guān)的特定時區(qū)中的零來“規(guī)范化”。 java.sql.Date sqlDate = new java.sql.Date(java.sql.Date.valueOf(?7-12-25).getTime()。 日期比較:簡單的比較可以以字符串的形式直接比較,也可使用 java.sql.Date.valueOf(?7-03-08).compar

15、eTo(java.sql.Date.valueOf(?7-03-18)方式來比較日期的大小.也可使用java.util.Date.after(java.util.Date)來比較. 4java.util.GregorianCalendar 6 / 13 GregorianCalendar 是 Calendar 的一個具體子類,提供了世界上大多數(shù)國家/地區(qū)使用的標(biāo)準(zhǔn)日歷系統(tǒng)。 GregorianCalendar 是一種混合日歷,在單一間斷性的支持下同時支持儒略歷和格里高利歷系統(tǒng),在默認(rèn)情況下,它對應(yīng)格里高利日歷創(chuàng)立時的格里高利歷日期(某些國家/地區(qū)是在 1582 年 10 月 15 日創(chuàng)立,在其

16、他國家/地區(qū)要晚一些)??捎烧{(diào)用方通過調(diào)用 setGregorianChange() 來更改起始日期。 歷史上,在那些首先采用格里高利歷的國家/地區(qū)中,1582 年 10 月 4 日(儒略歷)之后就是 1582 年 10 月 15 日(格里高利歷)。此日歷正確地模擬了這些變化。在開始格里高利歷之前,GregorianCalendar 實現(xiàn)的是儒略歷。格里高利歷和儒略歷之間的惟一區(qū)別就是閏年規(guī)則。儒略歷指定每 4 年就為閏年,而格里高利歷則忽略不能被 400 整除的世紀(jì)年。 預(yù)期的 格里高利歷和儒略歷。也就是說,GregorianCalendar 可實現(xiàn)可以通過在時間上無限地向后或向前外推當(dāng)前規(guī)

17、則來計算日期。因此,對于所有的年份,都可以使用 GregorianCalendar 來生成有意義并且一致的結(jié)果。但是,采用現(xiàn)代儒略歷規(guī)則時,使用 GregorianCalendar 得到的日期只在歷史上從公元 4 年 3 月 1 日之后是準(zhǔn)確的。在此日期之前,閏年規(guī)則的應(yīng)用沒有規(guī)則性,在 45 BC 之前,甚至不存在儒略歷。 7 / 13 在格里高利歷創(chuàng)立以前,新年是 3 月 25 日。為了避免混淆,此日歷始終使用 1 月 1 日為新年。如果想要格里高利歷轉(zhuǎn)換之前并且處于 1 月 1 日和 3 月 24 日之間的日期,則可以進(jìn)行手動調(diào)整。 為 WEEK_OF_YEAR 字段所計算的值的范圍從

18、1 到 53。一年的第一個星期始于 getFirstDayOfWeek() 的最早 7 天,至少包含該年的 getMinimalDaysInFirstWeek() 各天。這取決于 getMinimalDaysInFirstWeek()、getFirstDayOfWeek() 的值以及 1 月 1 日是星期幾。一年的第一個星期和下一年的第一個星期之間的各個星期按順序從 2 到 52 或 53(根據(jù)需要)進(jìn)行編號。 例如,1998 年 1 月 1 日是星期四。如果 getFirstDayOfWeek() 為 MONDAY,并且 getMinimalDaysInFirstWeek() 為 4(這些值

19、反映了 ISO 8601 和很多國家/地區(qū)標(biāo)準(zhǔn)),則 1998 年的第一個星期開始于 1997 年 12 月 29 日,結(jié)束于 1998 年 1 月 4 日。但是,如果 getFirstDayOfWeek() 為 SUNDAY,那么 1998 年的第一個星期開始于 1998 年 1 月 4 日,結(jié)束于 1998 年 1 月 10 日;1998 年頭三天是 1997 年第 53 個星期的一部分。 為 WEEK_OF_MONTH 字段所計算的值的范圍從 0 到 6。一個月的第一個星期(WEEK_OF_MONTH = 1 的日期)是該月至少連續(xù) getMinimalDaysInFirstWeek()

20、 天中的最早日期,結(jié)束于 getFirstDayOfWeek() 的前一天。與一年的第一個星期不同,一個月的第一個星期可能短于 7 天,也不必從 getFirstDayOfWeek() 這一天8 / 13 開始,并且不包括前一個月的日期。在第一個星期之前該月日期的 WEEK_OF_MONTH 為 0。 5. java.text.DateFormat DateFormat 是日期/時間格式化子類的抽象類,它以與語言無關(guān)的方式格式化并分析日期或時間。日期/時間格式化子類(如 SimpleDateFormat)允許進(jìn)行格式化(也就是日期 - 文本)、分析(文本- 日期)和標(biāo)準(zhǔn)化。將日期表示為 Dat

21、e 對象,或者表示為從 GMT(格林尼治標(biāo)準(zhǔn)時間)1970 年,1 月 1 日 00:00:00 這一刻開始的毫秒數(shù)。 DateFormat 提供了很多類方法,以獲得基于默認(rèn)或給定語言環(huán)境和多種格式化風(fēng)格的默認(rèn)日期/時間 Formatter。格式化風(fēng)格包括 FULL、LONG、MEDIUM 和 SHORT。方法描述中提供了使用這些風(fēng)格的更多細(xì)節(jié)和示例。 DateFormat 可幫助進(jìn)行格式化并分析任何語言環(huán)境的日期。對于月、星期,甚至日歷格式(陰歷和陽歷),其代碼可完全與語言環(huán)境的約定無關(guān)。 要格式化一個當(dāng)前語言環(huán)境下的日期,可使用某個靜態(tài)工廠方法: myString = DateFormat.getDateInstance().format(myDate)。 9 / 13 如果格式化多個日期,那么獲得該格式并多次使用它是更為高效的做法,這樣系統(tǒng)就不必多次獲取有關(guān)環(huán)境語言和國家/地區(qū)約定的信息了。 DateFormat df = DateFormat.getDateInstance()。 for (int i = 0。 i 文本)、分析(文本 - 日期)和規(guī)范化。 SimpleDateFormat 使得可以選擇任何用戶定義的日期-時間格式的模式。但是,仍然建議通過 DateFormat 中的 getTimeIns

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論