欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入理解java long 存儲(chǔ)時(shí)間戳

 更新時(shí)間:2018年10月19日 10:29:55   作者:鯨冬香  
存儲(chǔ)時(shí)間打算用時(shí)間戳來存儲(chǔ),打算用long類型來代表時(shí)間戳,這篇文章主要介紹了深入理解java long 存儲(chǔ)時(shí)間戳,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

存儲(chǔ)時(shí)間打算用時(shí)間戳來存儲(chǔ),打算用long類型來代表時(shí)間戳,但是在用long類型存儲(chǔ)時(shí)間戳的時(shí)候出了點(diǎn)問提。

在寫單元測(cè)試的時(shí)候,用一個(gè)long類型來存儲(chǔ)時(shí)間戳,發(fā)現(xiàn)編譯器報(bào)錯(cuò)了

剛開始猜想可能是因?yàn)閘ong不夠大,存儲(chǔ)不了。然后用double類型來存:

發(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ǔ)類型的問題,而是字面值范圍超出了。

用字符串來測(cè)試:

把時(shí)間戳變成字符串的字面值,在將他解析成long類型的和int類型的,然后在把他們輸出:

發(fā)現(xiàn)第一個(gè)long類型的成功輸出了,而int類型的卻報(bào)了一個(gè)number的錯(cuò)誤.

這說明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();
 }
}
 

輸出如下 :

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JVM:晚期(運(yùn)行期)優(yōu)化的深入理解

    JVM:晚期(運(yùn)行期)優(yōu)化的深入理解

    今天小編就為大家分享一篇關(guān)于JVM:晚期(運(yùn)行期)優(yōu)化的深入理解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • java 快速實(shí)現(xiàn)異步調(diào)用的操作方法

    java 快速實(shí)現(xiàn)異步調(diào)用的操作方法

    這篇文章主要介紹了java 如何快速實(shí)現(xiàn)異步調(diào)用方法,今天我們就來了解下 CompletableFuture,它Java 8引入的一種功能強(qiáng)大的異步編程工具,可以用于實(shí)現(xiàn)復(fù)雜的異步操作和處理鏈?zhǔn)降漠惒饺蝿?wù),需要的朋友可以參考下
    2023-07-07
  • MyBatis動(dòng)態(tài)SQL如何實(shí)現(xiàn)前端指定返回字段

    MyBatis動(dòng)態(tài)SQL如何實(shí)現(xiàn)前端指定返回字段

    這篇文章主要介紹了MyBatis動(dòng)態(tài)SQL如何實(shí)現(xiàn)前端指定返回字段,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring?IOC容器基于XML外部屬性文件的Bean管理

    Spring?IOC容器基于XML外部屬性文件的Bean管理

    這篇文章主要為大家介紹了Spring?IOC容器Bean管理XML外部屬性文件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 老生常談Java網(wǎng)絡(luò)編程TCP通信(必看篇)

    老生常談Java網(wǎng)絡(luò)編程TCP通信(必看篇)

    下面小編就為大家?guī)硪黄仙U凧ava網(wǎng)絡(luò)編程TCP通信(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • 從dubbo源碼分析qos-server端口沖突問題及解決

    從dubbo源碼分析qos-server端口沖突問題及解決

    這篇文章主要介紹了從dubbo源碼分析qos-server端口沖突問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 舉例講解設(shè)計(jì)模式中的訪問者模式在Java編程中的運(yùn)用

    舉例講解設(shè)計(jì)模式中的訪問者模式在Java編程中的運(yùn)用

    這篇文章主要介紹了舉例講解設(shè)計(jì)模式中的訪問者模式在Java編程中的運(yùn)用,訪問者模式是一種將算法與對(duì)象結(jié)構(gòu)分離的軟件設(shè)計(jì)模式,需要的朋友可以參考下
    2016-05-05
  • 基于web項(xiàng)目log日志指定輸出文件位置配置方法

    基于web項(xiàng)目log日志指定輸出文件位置配置方法

    下面小編就為大家分享一篇基于web項(xiàng)目log日志指定輸出文件位置配置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • java虛擬機(jī)多線程進(jìn)階篇總結(jié)

    java虛擬機(jī)多線程進(jìn)階篇總結(jié)

    在本篇內(nèi)容里小編給大家整理了關(guān)于java虛擬機(jī)多線程進(jìn)階篇的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們跟著參考下。
    2019-06-06
  • Springboot日志配置的實(shí)現(xiàn)示例

    Springboot日志配置的實(shí)現(xiàn)示例

    本文主要介紹了Springboot日志配置的實(shí)現(xiàn)示例,使用slf4j和logback的方式記錄日志,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08

最新評(píng)論