第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

用Java計(jì)算日期差

用Java計(jì)算日期差

翻閱古今 2019-11-04 10:24:26
我覺(jué)得很有趣,Java(或java.util庫(kù))沒(méi)有內(nèi)置函數(shù)來(lái)計(jì)算日期差。我想從另一個(gè)減去一個(gè)日期,以獲得它們之間的經(jīng)過(guò)時(shí)間。做這個(gè)的最好方式是什么?我知道簡(jiǎn)單的方法是將時(shí)間差以毫秒為單位,然后將其轉(zhuǎn)換為天。但是,我想知道這是否在所有情況下都有效(帶夏令時(shí)等)。
查看完整描述

3 回答

?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊

我知道簡(jiǎn)單的方法是將時(shí)間差以毫秒為單位,然后將其轉(zhuǎn)換為天。但是,我想知道這是否在所有情況下都有效(夏令時(shí)等)。


如果您的時(shí)間是從UTC日期得出的,或者它們僅僅是在同一系統(tǒng)上兩次調(diào)用System.getCurrentTimeMillis()的時(shí)間差,則您將獲得有效的毫秒數(shù),與任何時(shí)區(qū)問(wèn)題無(wú)關(guān)。(這就是為什么所有內(nèi)容都應(yīng)使用UTC作為存儲(chǔ)格式的原因-從UTC->當(dāng)?shù)貢r(shí)間開(kāi)始要容易得多;如果嘗試采用其他方式,則需要將本地時(shí)區(qū)與當(dāng)?shù)貢r(shí)間一起存儲(chǔ)-或嘗試推斷,g?。?/p>


至于將其轉(zhuǎn)換為幾天,您應(yīng)該可以除以86400000...。但要注意,每隔一年左右偶爾會(huì)有一次leap秒。


查看完整回答
反對(duì) 回復(fù) 2019-11-04
?
慕村9548890

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊

在Java 8中使用Joda-Time或新的java.time包。


這兩個(gè)框架都使用Half-Open方法,其中開(kāi)始是包含在內(nèi)的,而結(jié)尾是排斥的。有時(shí)標(biāo)注為[)。通常,這是定義時(shí)間跨度的最佳方法。


java.time

Java 8及更高版本中內(nèi)置的java.time框架具有一個(gè)Period類(lèi),用于表示時(shí)間跨度,以年,月,日為單位。但是此類(lèi)僅限于整天,不能表示小時(shí),分鐘和秒。


請(qǐng)注意,我們指定了時(shí)區(qū),這對(duì)于確定日期至關(guān)重要。例如,巴黎的新天要比蒙特利爾早。


ZoneId zoneId = ZoneId.of( "America/Montreal" );

LocalDate now = LocalDate.now( zoneId );

LocalDate then = LocalDate.of( 2001, 1, 1 );

Period period = Period.between( then, now );

然后:2001-01-01。現(xiàn)在:2015-09-07。期間:P14Y8M6D。天數(shù):5362


對(duì)于整天,則夏令時(shí)(DST)無(wú)關(guān)緊要。


如果要計(jì)算總天數(shù),請(qǐng)使用ChronoUnit包含一些計(jì)算方法的枚舉。注意,計(jì)算返回很長(zhǎng)的時(shí)間。


long days = ChronoUnit.DAYS.between( then, now );  // "5362" seen above.

我曾問(wèn)過(guò)要在java.time中進(jìn)行一整段時(shí)間,包括小時(shí),分鐘,秒。不可能的,因?yàn)镴ava的8使用捆綁的庫(kù)令人驚訝的解決辦法的建議由梅諾爾德:使用Duration中發(fā)現(xiàn)了類(lèi)javax.xml.datatype中的包。


喬達(dá)時(shí)代

這是Joda-Time 2.3中的一些示例代碼。


DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );

DateTime start = new DateTime( 2014, 1, 2, 3, 4, 5, timeZone );

DateTime stop = new DateTime( 2014, 5, 2, 3, 4, 5, timeZone );

Period period = new Period( start, stop );

調(diào)用toString將獲得ISO 8601標(biāo)準(zhǔn)定義的形式的字符串表示形式PnYnMnDTnHnMnS。


查看完整回答
反對(duì) 回復(fù) 2019-11-04
  • 3 回答
  • 0 關(guān)注
  • 686 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)