您好,登錄后才能下訂單哦!
這篇文章主要介紹“java long類型存儲(chǔ)時(shí)間戳的詳細(xì)介紹”,在日常操作中,相信很多人在java long類型存儲(chǔ)時(shí)間戳的詳細(xì)介紹問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”java long類型存儲(chǔ)時(shí)間戳的詳細(xì)介紹”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
存儲(chǔ)時(shí)間打算用時(shí)間戳來(lái)存儲(chǔ),打算用long類型來(lái)代表時(shí)間戳,但是在用long類型存儲(chǔ)時(shí)間戳的時(shí)候出了點(diǎn)問(wèn)提。
在寫單元測(cè)試的時(shí)候,用一個(gè)long類型來(lái)存儲(chǔ)時(shí)間戳,發(fā)現(xiàn)編譯器報(bào)錯(cuò)了
剛開始猜想可能是因?yàn)閘ong不夠大,存儲(chǔ)不了。然后用double類型來(lái)存:
發(fā)現(xiàn)還是報(bào)錯(cuò)了,仔細(xì)想想不對(duì),double存儲(chǔ)的數(shù)量應(yīng)該時(shí)很大的,不會(huì)連時(shí)間戳都存儲(chǔ)不了。
在后面加上小數(shù)點(diǎn)之后,居然可以存了:
加了小數(shù)點(diǎn)之后就能存了,仔細(xì)一想,之前沒加小數(shù)點(diǎn)的時(shí)候他是整數(shù),加了小數(shù)點(diǎn)之后變成了浮點(diǎn)數(shù),猜測(cè)之前沒加上小數(shù)點(diǎn)的時(shí)間戳是一個(gè)整形的字面值,加上小數(shù)點(diǎn)后是一個(gè)浮點(diǎn)數(shù)的字面值,之前的報(bào)錯(cuò)應(yīng)該不是存儲(chǔ)類型的問(wèn)題,而是字面值范圍超出了。
用字符串來(lái)測(cè)試:
把時(shí)間戳變成字符串的字面值,在將他解析成long類型的和int類型的,然后在把他們輸出:
發(fā)現(xiàn)第一個(gè)long類型的成功輸出了,而int類型的卻報(bào)了一個(gè)number的錯(cuò)誤.
這說(shuō)明long是可以存儲(chǔ)時(shí)間戳的,而int存儲(chǔ)不了時(shí)間戳,所以判斷之前不能存儲(chǔ)時(shí)因?yàn)樽置嬷禐檎纬隽朔秶?/p>
Java 各種日期/時(shí)間 對(duì)象轉(zhuǎn)Long時(shí)間戳
package cn.xbz; import java.text.SimpleDateFormat; import java.time.*; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; /** * @title 各種日期/時(shí)間對(duì)象轉(zhuǎn)時(shí)間戳 * @author Xingbz * @createDate 2018-5-18 */ public class DateTime2MillisDemo { private static final String FORMAT_STR = "yyyy-MM-dd HH:mm:ss"; public static void main(String[] args) { System.out.println("====== JDK7及之前 ======"); Long l1 = getMillis1(); Long l2 = date2Millis(new Date()); Long l3 = calendar2Millis(Calendar.getInstance()); Long l4 = string2Millis(new SimpleDateFormat(FORMAT_STR).format(new Date()) , FORMAT_STR);//為了與以上幾個(gè)保持一致 System.out.println(l1 + "\n" + l2 + "\n" + l3 + "\n" + l4);//會(huì)有幾毫秒的差別 System.out.println("====== JDK8 ======"); Long l5 = getMillis2(); Long l6 = localDateTime2Millis(LocalDateTime.now()); Long l7 = localDate2Millis(LocalDate.now()); Long l8 = clock2Millis(Clock.systemUTC()); Long l9 = zoneDateTime2Millis(ZonedDateTime.now()); Long l10 = string2MillisWithJDK8(LocalDateTime.now().format(DateTimeFormatter.ofPattern(FORMAT_STR)) , FORMAT_STR);//為了與以上幾個(gè)保持一致 System.out.println(l5 + "\n" + l6 + "\n" + l7 + "\n" + l8 + "\n" + l9 + "\n" + l10);//會(huì)有幾毫秒的差別 } /* JDK7及之前 */ /** 獲取時(shí)間戳 */ public static Long getMillis1() { return System.currentTimeMillis(); } /** Date轉(zhuǎn)時(shí)間戳 */ public static Long date2Millis(Date date) { return date.getTime(); } /** Calendar轉(zhuǎn)時(shí)間戳 */ public static Long calendar2Millis(Calendar calendar) { return calendar.getTime().getTime(); } /** 日期字符串轉(zhuǎn)時(shí)間戳 */ public static Long string2Millis(String dateStr, String formatStr) { try { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatStr); return simpleDateFormat.parse(dateStr).getTime(); } catch (Exception e) { return 0L; } } /* JDK8 */ /** 獲取時(shí)間戳 */ public static Long getMillis2() { return Instant.now().toEpochMilli(); } /** LocalDateTime轉(zhuǎn)時(shí)間戳 */ public static Long localDateTime2Millis(LocalDateTime localDateTime) { return localDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli(); } /** LocalDate轉(zhuǎn)時(shí)間戳 */ public static Long localDate2Millis(LocalDate localDate) { return LocalDateTime.of(localDate, LocalTime.MIN).toInstant(ZoneOffset.ofHours(8)).toEpochMilli(); } /** Clock轉(zhuǎn)時(shí)間戳 */ public static Long clock2Millis(Clock clock) { return clock.millis(); } /** ZoneDateTIme轉(zhuǎn)時(shí)間戳(這個(gè)不常用吧~) */ public static Long zoneDateTime2Millis(ZonedDateTime zonedDateTime) { return zonedDateTime.toLocalDateTime().toInstant(ZoneOffset.ofHours(8)).toEpochMilli();//!!!好費(fèi)勁 } /** String轉(zhuǎn)時(shí)間戳(JDK8) */ public static Long string2MillisWithJDK8(String dateStr , String formatStr) { return LocalDateTime.parse(dateStr , DateTimeFormatter.ofPattern(formatStr)).toInstant(ZoneOffset.ofHours(8)).toEpochMilli(); } }
輸出如下 :
到此,關(guān)于“java long類型存儲(chǔ)時(shí)間戳的詳細(xì)介紹”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。