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

下載本文檔

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

文檔簡介

#/14JAVA處理日期時(shí)間常用方法:java.util.CalendarCalendar類是一個(gè)抽象類,它為特定瞬間與一組諸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日歷字段之間的轉(zhuǎn)換提供了一些方法,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距歷元(即格林威治標(biāo)準(zhǔn)時(shí)間1970年1月1日的00:00:00.000,格里高利歷)的偏移量。例:Calendarcal=Calendar.getInstance()?!ㄊ褂媚J(rèn)時(shí)區(qū)和語言環(huán)境獲得一個(gè)日歷。cal.add(Calendar.DAY_OF_MONTH,-1)。//取當(dāng)前日期的前一天.cal.add(Calendar.DAY_OF_MONTH,+1)。//取當(dāng)前日期的后一天.//通過格式化輸出日期java.text.SimpleDateFormatformat=newjava.text.SimpleDateFormat("yyyy-MM-dd")。System.out.println("Todayis:"+format.format(Calendar.getInstance().getTime()))。System.out.println("yesterdayis:"+format.format(cal.getTime()))。得到2007-12-25日期:Calendarcalendar=newGregorianCalendar(2007,11,25,0,0,0)。Datedate=calendar.getTime()。System.out.println("2007Christmasis:"+format.format(date))。//java月份是從0-11,月份設(shè)置時(shí)要減1.//GregorianCalendar構(gòu)造方法參數(shù)依次為:年,月-1,日,時(shí),分,秒.取日期的部分:intyear=calendar.get(Calendar.YEAR)。intmonth=calendar.get(Calendar.MONTH)+1。intday=calendar.get(Calendar.DAY_OF_MONTH)。inthour=calendar.get(Calendar.HOUR_OF_DAY)。intminute=calendar.get(Calendar.MINUTE)。intseconds=calendar.get(Calendar.SECOND)。取月份要加1.判斷當(dāng)前月份的最大天數(shù):Calendarcal=Calendar.getInstance()。intday=cal.getActualMaximum(Calendar.DAY_OF_MONTH)。System.out.println(day)。java.util.Date類Date表示特定的瞬間,精確到毫秒。從JDK1.1開始,應(yīng)該使用Calendar類實(shí)現(xiàn)日期和時(shí)間字段之間轉(zhuǎn)換,使用DateFormat類來格式化和分析日期字符串。Date中的相應(yīng)方法已廢棄。盡管Date類打算反映協(xié)調(diào)世界時(shí)(UTC),但無法做到如此準(zhǔn)確,這取決于Java虛擬機(jī)的主機(jī)環(huán)境。當(dāng)前幾乎所有操作系統(tǒng)都假定1天=24義60義60=86400秒。但對于UTC,大約每一兩年出現(xiàn)一次額外的一秒,稱為“閏秒”。閏秒始終作為當(dāng)天的最后一秒增加,并且始終在12月31日或6月30日增加。例如,1995年的最后一分鐘是61秒,因?yàn)樵黾恿碎c秒。大多數(shù)計(jì)算機(jī)時(shí)鐘不是特別的準(zhǔn)確,因此不能反映閏秒的差別。在類Date所有可以接受或返回年、月、日期、小時(shí)、分鐘和秒值的方法中,將使用下面的表示形式:年份y由整數(shù)y-1900表示。?月份由從0至11的整數(shù)表示;0是一月、1是二月等等;因此11是十二月。日期(一月中的某天)按通常方式由整數(shù)1至31表示。小時(shí)由從0至23的整數(shù)表示。因此,從午夜到1a.m.的時(shí)間是0點(diǎn),從中午到1p.m.的時(shí)間是12點(diǎn)。分鐘按通常方式由0至59的整數(shù)表示。秒由0至61的整數(shù)表示;值60和61只對閏秒發(fā)生,盡管那樣,也只用在實(shí)際正確跟蹤閏秒的Java實(shí)現(xiàn)中。于按當(dāng)前引入閏秒的方式,兩個(gè)閏秒在同一分鐘內(nèi)發(fā)生是極不可能的,但此規(guī)范遵循ISOC的日期和時(shí)間約定。在所有情形中,針對這些目的賦予方法的參數(shù)不需要在指定的范圍內(nèi);例如,可以把日期指定為1月32日,并把它解釋為2月1日的相同含義。java.util.Datetoday=newjava.util.Date()。System.out.println("Todayis"+formats.format(today))。取當(dāng)月的第一天:java.text.SimpleDateFormatformat=newjava.text.SimpleDateFormat("yyyy-MM-01")。java.util.DatefirstDay=newjava.util.Date()。System.out.println("themonthfirstdayis"+formats.format(firstDay))。取當(dāng)月的最后一天:Calendarcal=Calendar.getInstance()。intmaxDay=cals.getActualMaximum(Calendar.DAY_OF_MONTH)。java.text.Formatformatter3=newjava.text.SimpleDateFormat("yyyy-MM-"+maxDay)。System.out.println(formatter3.format(cal.getTime()))。求兩個(gè)日期之間相隔的天數(shù):java.text.SimpleDateFormatformat=newjava.text.SimpleDateFormat("yyyy-MM-dd")。java.util.DatebeginDate=format.parse("2007-12-24")。java.util.DateendDate=format.parse("2007-12-25")。longday=(date.getTime()-mydate.getTime())/(24*60*60*1000)。System.out.println("相隔的天數(shù)^+day)。一年前的日期:java.text.Formatformatter=newjava.text.SimpleDateFormat("yyyy-MM-dd")。java.util.DatetodayDate=newjava.util.Date()。longbeforeTime=(todayDate.getTime()/1000)-60*60*24*365。todayDate.setTime(beforeTime*1000)。StringbeforeDate=formatter.format(todayDate)。System.out.println(beforeDate)。一年后的日期:java.text.Formatformatter=newjava.text.SimpleDateFormat("yyyy-MM-dd")。java.util.DatetodayDate=newjava.util.Date()。longafterTime=(todayDate.getTime()/1000)+60*60*24*365。todayDate.setTime(afterTime*1000)。StringafterDate=formatter.format(todayDate)。System.out.println(afterDate)。求10小時(shí)后的時(shí)間java.util.CalendarCal=java.util.Calendar.getInstance()。Cal.setTime(dateOper)。Cal.add(java.util.Calendar.HOUR_OF_DAY,10)。System.out.println("date:"+forma.format(Cal.getTime()))。求10小時(shí)前的時(shí)間java.util.CalendarCal=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ù)庫用的日期類型一個(gè)包裝了毫秒值的瘦包裝器(thinwrapper),它允許JDBC將毫秒值標(biāo)識為SQLDATE值。毫秒值表示自1970年1月1日00:00:00GMT以來經(jīng)過的毫秒數(shù)。為了與SQLDATE的定義一致,由java.sql.Date實(shí)例包裝的毫秒值必須通過將時(shí)間、分鐘、秒和毫秒設(shè)置為與該實(shí)例相關(guān)的特定時(shí)區(qū)中的零來“規(guī)范化”。java.sql.DatesqlDate=newjava.sql.Date(java.sql.Date.valueOf("2007-12-25").getTime())。日期比較:簡單的比較可以以字符串的形式直接比較,也可使用java.sql.Date.valueOf("2007-03-08").compareTo(java.sql.Date.valueOf("2007-03-18"))方式來比較日期的大小.也可使用java.util.Date.after(java.util.Date)來比較.4.java.util.GregorianCalendarGregorianCalendar是Calendar的一個(gè)具體子類,提供了世界上大多數(shù)國家/地區(qū)使用的標(biāo)準(zhǔn)日歷系統(tǒng)。GregorianCalendar是一種混合日歷,在單一間斷性的支持下同時(shí)支持儒略歷和格里高利歷系統(tǒng),在默認(rèn)情況下,它對應(yīng)格里高利日歷創(chuàng)立時(shí)的格里高利歷日期(某些國家/地區(qū)是在1582年10月15日創(chuàng)立,在其他國家/地區(qū)要晚一些)??捎烧{(diào)用方通過調(diào)用setGregorianChange()來更改起始日期。歷史上,在那些首先采用格里高利歷的國家/地區(qū)中,1582年10月4日(儒略歷)之后就是1582年10月15日(格里高利歷)。此日歷正確地模擬了這些變化。在開始格里高利歷之前,GregorianCalendar實(shí)現(xiàn)的是儒略歷。格里高利歷和儒略歷之間的惟一區(qū)別就是閏年規(guī)則。儒略歷指定每4年就為閏年,而格里高利歷則忽略不能被400整除的世紀(jì)年。GregorianCalendar可實(shí)現(xiàn)預(yù)期的格里高利歷和儒略歷。也就是說,可以通過在時(shí)間上無限地向后或向前外推當(dāng)前規(guī)則來計(jì)算日期。因此,對于所有的年份,都可以使用GregorianCalendar來生成有意義并且一致的結(jié)果。但是,采用現(xiàn)代儒略歷規(guī)則時(shí),使用GregorianCalendar得到的日期只在歷史上從公元4年3月1日之后是準(zhǔn)確的。在此日期之前,閏年規(guī)則的應(yīng)用沒有規(guī)則性,在45BC之前,甚至不存在儒略歷。在格里高利歷創(chuàng)立以前,新年是3月25日。為了避免混淆,此日歷始終使用1月1日為新年。如果想要格里高利歷轉(zhuǎn)換之前并且處于1月1日和3月24日之間的日期,則可以進(jìn)行手動(dòng)調(diào)整。為WEEK_OF_YEAR字段所計(jì)算的值的范圍從1到53。一年的第一個(gè)星期始于getFirstDayOfWeek()的最早7天,至少包含該年的getMinimalDaysInFirstWeek()各天。這取決于getMinimalDaysInFirstWeek()、getFirstDayOfWeek()的值以及1月1日是星期幾。一年的第一個(gè)星期和下一年的第一個(gè)星期之間的各個(gè)星期按順序從2到52或53(根據(jù)需要)進(jìn)行編號。例如,1998年1月1日是星期四。如果getFirstDayOfWeek()為MONDAY,并且getMinimalDaysInFirstWeek()為4(這些值反映了ISO8601和很多國家/地區(qū)標(biāo)準(zhǔn)),則1998年的第一個(gè)星期開始于1997年12月29日,結(jié)束于1998年1月4日。但是,如果getFirstDayOfWeek()為SUNDAY,那么1998年的第一個(gè)星期開始于1998年1月4日,結(jié)束于1998年1月10日;1998年頭三天是1997年第53個(gè)星期的一部分。為WEEK_OF_MONTH字段所計(jì)算的值的范圍從0到6。一個(gè)月的第一個(gè)星期(WEEK_OF_MONTH=1的日期)是該月至少連續(xù)getMinimalDaysInFirstWeek()天中的最早日期,結(jié)束于getFirstDayOfWeek()的前一天。與一年的第一個(gè)星期不同,一個(gè)月的第一個(gè)星期可能短于7天,也不必從getFirstDayOfWeek()這一天開始,并且不包括前一個(gè)月的日期。在第一個(gè)星期之前該月日期的WEEK_OF_MONTH為0。java.text.DateFormatDateFormat是日期/時(shí)間格式化子類的抽象類,它以與語言無關(guān)的方式格式化并分析日期或時(shí)間。日期/時(shí)間格式化子類(如SimpleDateFormat)允許進(jìn)行格式化(也就是日期->文本)、分析(文本->日期)和標(biāo)準(zhǔn)化。將日期表示為Date對象,或者表示為從GMT(格林尼治標(biāo)準(zhǔn)時(shí)間)1970年,1月1日00:00:00這一刻開始的毫秒數(shù)。DateFormat提供了很多類方法,以獲得基于默認(rèn)或給定語言環(huán)境和多種格式化風(fēng)格的默認(rèn)日期/時(shí)間Formatter。格式化風(fēng)格包括FULL、LONG、MEDIUM和SHORT。方法描述中提供了使用這些風(fēng)格的更多細(xì)節(jié)和示例。DateFormat可幫助進(jìn)行格式化并分析任何語言環(huán)境的日期。對于月、星期,甚至日歷格式(陰歷和陽歷),其代碼可完全與語言環(huán)境的約定無關(guān)。要格式化一個(gè)當(dāng)前語言環(huán)境下的日期,可使用某個(gè)靜態(tài)工廠方法:myString=DateFormat.getDateInstance().format(myDate)。如果格式化多個(gè)日期,那么獲得該格式并多次使用它是更為高效的做法,這樣系統(tǒng)就不必多次獲取有關(guān)環(huán)境語言和國家/地區(qū)約定的信息了。DateFormatdf=DateFormat.getDateInstance()。for(inti=0。i<myDate.length。++i){output.println(df.format(myDate[i])+"。")。}要格式化不同語言環(huán)境的日期,可在getDateInstance()的調(diào)用中指定它。DateFormatdf=DateFormat.getDateInstance(DateFormat.LONG,Locale.FRANCE)。還可使用DateFormat進(jìn)行分析。myDate=df.parse(myString)。使用getDateInstance來獲得該國家/地區(qū)的標(biāo)準(zhǔn)日期格式。另外還提供了一些其他靜態(tài)工廠方法。使用getTimeInstance可獲得該國家/地區(qū)的時(shí)間格式。使用getDateTimeInstance可獲得日期和時(shí)間格式??梢詫⒉煌x項(xiàng)傳入這些工廠方法,以控制結(jié)果的長度(從SHORT到MEDIUM到LONG再到FULL)。確切的結(jié)果取決于語言環(huán)境,但是通常:.SHORT完全為數(shù)字,如12.13.52或3:30pm.MEDIUM較長,如Jan12,1952.LONG更長,如January12,1952或3:30:32pm.FULL是完全指定,如Tuesday,April12,1952AD或3:30:42pmPST。如果愿意,還可以在格式上設(shè)置時(shí)區(qū)。如果想對格式化或分析施加更多的控制(或者給予用戶更多的控制),可以嘗試將從工廠方法所獲得的DateFormat強(qiáng)制轉(zhuǎn)換為SimpleDateFormat。這適用于大多數(shù)國家/地區(qū);只是要記住將其放入一個(gè)try代碼塊中,以防遇到特殊的格式。還可以使用借助ParsePosition和FieldPosition的分析和格式化方法形式來?逐步地分析字符串的各部分。.對齊任意特定的字段,或者找出字符串在屏幕上的選擇位置。java.text.SimpleDateFormatSimpleDateFormat是一個(gè)以與語言環(huán)境相關(guān)的方式來格式化和分析日期的具體類。它允許進(jìn)行格式化(日期->文本)、分析(文本->

溫馨提示

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

最新文檔

評論

0/150

提交評論