




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1. java計算時間依靠1970年1月1日開始的毫秒數(shù).2. date類的構(gòu)造函數(shù) date()返回代表當(dāng)前創(chuàng)建的時刻的對象。date的方法gettime()返回一個long 值在數(shù)值上等于 1970年 1 月 1 日之前或之后的時刻。3. dateformat類用來轉(zhuǎn)換 date到string,反之亦然。靜態(tài)方法getdateinstance(返回dateformat的 缺省格式;getdateinstance(dateformat.field返回指定的 dateformat 對象格式。format(date d)方法 返回string表示日期,例如"january 1,2002
2、.反過來,parse(string s方法返回以參數(shù)字符串表 示的 date 對象。4. format()方法返回的字符串格式根據(jù)不同地區(qū)的時間設(shè)置而有所不同。5. gregoria ncale ndeai類有兩個重要的構(gòu)造函數(shù):gregoria ncalerdar()返回代表當(dāng)前創(chuàng)建時間的對象; gregoriancalendar(int year,int month,int date)返回代表任意日期的對象。gregoriancalendar類的gettime()方法返回日期對象。add(int field,int amount)方法通過加或減時間單位,象天數(shù),月數(shù)或年數(shù)來計算日期。gre
3、goriancalenda和時間兩個gregoriancalenda啲構(gòu)造函數(shù)可以用來處理時間。前者創(chuàng)建一個表示日期,小時和分鐘 的對象:gregoriancalendar(int year, int month, int date, int hour, int minute)第二個創(chuàng)建一個表示一個日期,小時,分鐘和秒:gregoriancalendar(int year, int month, int date, int hour, int minute, int second)(年,月,日 )。如果你首先,我應(yīng)該提醒一下,每一個構(gòu)造函數(shù)需要時間信息中的日期信息想說2:30 p.m.你必須指
4、出日期。同樣,每一個 gregoria ncale ndar構(gòu)造函數(shù)創(chuàng)建一個在時間上使用毫秒計算的對象。所以,女0 果你的構(gòu)造函數(shù)只提供年,月,日參數(shù),那小時,分鐘,秒和毫秒的值將被置0.dateformat 和時間你可以使用靜態(tài)方法 getdatetimeinstance(int datestyle,int timestyle來建立 dateformat 對象來顯示 時間和日期。 這個方法表明你想要的日期和時間格式。 如果你喜歡使用缺省格式, 可以使用 getdatetime in sta nee(來代替它。你可以使用靜態(tài)方法gettimeinstance(int timestyle創(chuàng)建da
5、teformat對象來顯示正確的時間。下面的程序示范了getdatetimeinstanee(和 gettimeinstanee(怎樣工作: import java.util.*;import java.text.*;public class apollo public static void main(string args) gregoriancalendar liftoffapollo11 = new gregoriancalendar(1969, calendar.july, 16, 9, 32); date d = liftoffapollo11.gettime();dateform
6、at df1 = dateformat.getdatetimeinstance(dateformat.medium, dateformat.medium); dateformat df2 = dateformat.gettimeinstance(dateformat.short);string s1 = df1.format(d);string s2 = df2.format(d);system.out.println(s1);system.out.println(s2); 在我的電腦上,上面的程序顯示如下:jul 16, 1969 9:32:00 am9:32 am(輸出根據(jù)你所在得地區(qū)有所
7、不同 )計算時間間隔 你可能有時需要計算過去的時間; 例如, 持續(xù)時間。 一個出租公司按小時或天數(shù)出租東西, 融界,經(jīng)常需要計算重要的支付時間。將問題復(fù)雜化, 人類至少是用兩種方法計算時間。給你開始和結(jié)束時間, 你想知道制造流程的計算時間對他們也很有用。同樣的, 在金你可以說一天已經(jīng)結(jié)束當(dāng) 24 小時過去了,或者日歷從今天翻到明天。我們將討論我們想到的這兩種情況。時間段,情況 1:嚴(yán)格時間單位在這種情況中, 只有 24小時過去, 這天才過去, 60分鐘過去, 這個小時才過去, 60秒過去, 這個分鐘才過去,以此類推。在這個方法中, 23小時的時間將被認(rèn)為是 0 天。 使用這種方法計算時間段,
8、你從計算過去的毫秒開始。 為了做到這一點, 首先轉(zhuǎn)換每個日期 為從 1970年 1月 1日起得毫秒數(shù)。你可以從第二個毫秒值中減去第一個毫秒值。這里有一 個簡單的計算:import java.util.*;public class elapsedmillis public static void main(string args) gregoriancalendar gc1 = new gregoriancalendar(1995, 11, 1, 3, 2, 1); gregoriancalendar gc2 = new gregoriancalendar(1995, 11, 1, 3, 2,
9、2); / the above two dates are one second apart date d1 = gc1.gettime();date d2 = gc2.gettime(); long l1 = d1.gettime(); long l2 = d2.gettime();long difference = l2 - l1; system.out.println("elapsed milliseconds: " + difference);面的程序打印如下:elapsed milliseconds: 1000這個程序也帶來一點混淆。gregoriancalend
10、a類的gettime()返回一個date對象,date類的gettime()方法返回從1970年1月1日到這個時間的long類型的毫秒數(shù)值。雖然他們的方法名字相同, 返回值卻不一樣!下面的程序片斷用簡單的整數(shù)除法轉(zhuǎn)換毫秒到秒:long milliseconds = 1999; long seconds = 1999 / 1000;這種方法舍去小數(shù)部分轉(zhuǎn)換毫秒到秒,所以 1,999毫秒等于 1 秒, 2,000毫秒等于 2秒。計算更大的單位 -例如天數(shù),小時和分鐘 -給定一個時間數(shù)值,可以使用下面的過程:1. 計算最大的單位,減去這個數(shù)值的秒數(shù)2. 計算第二大單位,減去這個數(shù)值的秒數(shù)3. 重復(fù)操
11、作直到只剩下秒例如 ,如果你的時間的 10,000秒,你想知道這個數(shù)值相應(yīng)的是多少小時,多少分鐘,多少秒, 你從最大的單位開始:小時。 10,000除以 3600(一個小時的秒數(shù))得到小時數(shù)。使用整數(shù)除 法,答案是 2小時(整數(shù)除法中小數(shù)舍去)計算剩下的秒數(shù), 10,000-(3,600 x 2) = 2,800秒。 所以你有 2 小時和 2,800秒。將 2,80 0秒轉(zhuǎn)換成分鐘,2,800除以 60。使用整數(shù)除法,答案是46。 2,800 - (60 x 46) = 40秒。最后答案是 2小時, 46分, 40秒。下面的java程序使用上面的計算方法:import java.util.*;
12、public class elapsed1 public void calchms(int timeinseconds) int hours, minutes, seconds;hours = timeinseconds / 3600; timeinseconds = timeinseconds - (hours * 3600); minutes = timeinseconds / 60;timeinseconds = timeinseconds - (minutes * 60);seconds = timeinseconds;system.out.println(hours + "
13、 hour(s) " + minutes + " minute(s) " + seconds + " second(s)"); public static void main(string args) elapsed1 elap = new elapsed1(); elap.calchms(10000);輸出結(jié)果如下:2 hour(s) 46 minute(s) 40 second(s)例如,你用上面的程序計算上面的程序甚至在時間少于一個小時也可以正確的計算小時數(shù)。1,000秒,輸出入下:11飛到月球使用得時間:0 hour(s) 16 min
14、ute(s) 40 second(s) 舉一個現(xiàn)實世界的例子,下面的程序計算阿波羅import java.util.*;public class lunarlanding public long getelapsedseconds(gregoriancalendar gc1, gregoriancalendar gc2) date d1 = gc1.gettime();date d2 = gc2.gettime();long l1 = d1.gettime();long l2 = d2.gettime();long difference = math.abs(l2 - l1); return
15、difference / 1000;public void calchm(long timeinseconds) long hours, minutes, seconds; hours = timeinseconds / 3600; timeinseconds = timeinseconds - (hours * 3600); minutes = timeinseconds / 60;system.out.println(hours + " hour(s) " + minutes + " minute(s)" ); public static void
16、main(string args) gregoriancalendar lunarlanding = new gregoriancalendar(1969, calendar.july, 20, 16, 17); gregoriancalendar lunardeparture = new gregoriancalendar(1969, calendar.july, 21, 13, 54); gregoriancalendar starteva = new gregoriancalendar(1969, calendar.july, 20, 22, 56);gregoriancalendar
17、endeva = new gregoriancalendar(1969, calendar.july, 21, 1, 9);lunarlanding apollo = new lunarlanding();long eva = apollo.getelapsedseconds(starteva, endeva); system.out.print("eva duration = "); apollo.calchm(eva);long lunarstay = apollo.getelapsedseconds(lunarlanding, lunardeparture); sys
18、tem.out.print("lunar stay = ");apollo.calchm(lunarstay);面程序輸出如下:eva duration = 2 hour(s) 13 minute(s) lunar stay = 21 hour(s) 37 minute(s)目前為止,我們計算的基礎(chǔ)公式是這樣的:"1 個月 =?天, 1年=?天 "怎么辦?月份的天數(shù)有 28,29,30,31;一年可以是 365 或 366天。 月份和年時,問題就產(chǎn)生了。例如,如果你使用月份的平均天數(shù) 下面的時間間隔 :1 分鐘 =60 秒,1 小時 =60 分, 1 天
19、 =24 小時。因此,當(dāng)你試圖計算嚴(yán)格單位的近似30.4375),并且計算* july 1, 2:00 a.m. to july 31, 10:00 p.m.* february 1, 2:00 a.m. to february 29, 10:00 p.m.第一個計算結(jié)果是 1 個月;第二個結(jié)果是 0 個月! 所以,在計算嚴(yán)格單位時間的月份和年份是要想好。時間段,情況 2:時間單位變化 時間單位的變化相當(dāng)?shù)暮唵危喝绻阋y(tǒng)計天數(shù),你可以簡單的統(tǒng)計日期變化次數(shù)。例如, 如果某事 15日開始, 17日結(jié)束,經(jīng)過 2 天。(日期先是便到 16,再到 17)同樣的,一個步 驟下午3: 25開始,4:
20、10 p.m結(jié)束,歷時1個小時,因為小時數(shù)值變了一次(從3到4)。圖書館經(jīng)常使用這種習(xí)慣計算時間。 例如, 如果你從圖書館接一本書, 我不能占有這本書最 少 24 小時,會認(rèn)為圖書館這樣才給你算一天。而是,我的賬號上記錄我借書的日期。日期 以變成下一天,我就已經(jīng)結(jié)這本書一天了,即使總計不足 24小時。 當(dāng)使用單位的變化來計算時間段, 通常感覺計算的時間沒有多于一個時間單位。例如, 如果可是,答案是一天還差 9 個小9:00 p.m我借了一本圖書館的書,第二天中午還回去,我能算出我借了這本書一天了。有一種感覺在問: "1 天和幾個小時呢? "這本說總計借出 15個小時, 時呢
21、?因此,這篇文章里,我將以一個時間單位變化計算時間。單位變化的時間算法這是你怎樣計算兩個日期的時間變化:1. 制作兩個日期的拷貝。closeO方法能制作拷貝。2. 使用日期拷貝,將所有的小于時間單位變化的部分設(shè)置成它的最小單位。 算天數(shù),那么將小時,分鐘,秒和毫秒設(shè)置成 置稱他們各自的最小值。3. 取出較早的日期,將你要計算的單位加 1, 案??梢允褂胋efore()和after()方法,他們返回 期之前或之后。下面的類的方法用來計算天數(shù)和月數(shù)。0。這種情況中,使用例如,如果計clear()方法將時間值設(shè)你加 1 的次數(shù)就是答重復(fù)直到兩個日期相等。boolean 值,來判斷是否一個日期在另一個
22、日import java.util.*;public class elapsedtime public int getdays(gregoriancalendar g1, gregoriancalendar g2) int elapsed = 0;gregoriancalendar gc1, gc2;if (g2.after(g1) gc2 = (gregoriancalendar) g2.clone();gc1 = (gregoriancalendar) g1.clone(); else gc2 = (gregoriancalendar) g1.clone();gc1 = (gregoria
23、ncalendar) g2.clone(); gc1.clear(lisecond);gc1.clear(calendar.second);gc1.clear(calendar.minute);gc1.clear(calendar.hour_of_day);gc2.clear(lisecond);gc2.clear(calendar.second);gc2.clear(calendar.minute);gc2.clear(calendar.hour_of_day);while ( gc1.before(gc2) ) gc1.add(calenda
24、r.date, 1); elapsed+;return elapsed;public int getmonths(gregoriancalendar g1, gregoriancalendar g2) int elapsed = 0;gregoriancalendar gc1, gc2;if (g2.after(g1) gc2 = (gregoriancalendar) g2.clone();gc1 = (gregoriancalendar) g1.clone(); else gc2 = (gregoriancalendar) g1.clone();gc1 = (gregoriancalend
25、ar) g2.clone(); gc1.clear(lisecond);gc1.clear(calendar.second);gc1.clear(calendar.minute);gc1.clear(calendar.hour_of_day);gc1.clear(calendar.date);gc2.clear(lisecond);gc2.clear(calendar.second);gc2.clear(calendar.minute); gc2.clear(calendar.hour_of_day); gc2.clear(calendar.date);while ( gc1.before(gc2) ) gc1.add(calendar.month, 1)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 陜西省安康市2024-2025學(xué)年高三下學(xué)期第二次質(zhì)量考試(二模)地理試題(含答案)
- 企業(yè)對外溝通與合作記錄表
- 鄉(xiāng)村旅游規(guī)劃設(shè)計服務(wù)協(xié)議
- 產(chǎn)品保密與知識產(chǎn)權(quán)保護(hù)契約書
- 倒裝句的構(gòu)成與識別:英語語法知識鞏固教案
- 鄉(xiāng)村土地承包經(jīng)營獎補資金使用協(xié)議
- 二手房買賣過戶網(wǎng)簽協(xié)議
- 健康飲食品牌推廣合同書
- 本季度銷售業(yè)績匯報與展望
- 高體三教授治療眩暈病學(xué)術(shù)思想研究
- 《元德秀字紫芝》2019年山東濰坊中考文言文閱讀真題(含答案與翻譯)
- 建設(shè)“三型三化551”財務(wù)體系加快財務(wù)轉(zhuǎn)型創(chuàng)建一流財務(wù)指導(dǎo)意見
- 語言領(lǐng)域核心經(jīng)驗《學(xué)前兒童語言學(xué)習(xí)與發(fā)展核心經(jīng)驗》
- 湖北省華中師大一附中2020-2021高一物理期中檢測試卷【含答案】
- 2021年合肥職業(yè)技術(shù)學(xué)院職業(yè)適應(yīng)性測試試題及答案解析
- 2022年三年級美術(shù)下冊教案課題美化教室一角
- 初中物理公式MicrosoftWord文檔
- 詐騙案件授課PPT課件
- 弗洛姆異化理論
- 碳納米管_ppt課件
- 【課件】第2課如何鑒賞美術(shù)作品課件-高中美術(shù)人教版(2019)美術(shù)鑒賞
評論
0/150
提交評論