最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中時間戳的獲取和轉(zhuǎn)換的示例分析

 更新時間:2020年07月27日 09:56:03   作者:pinlantu  
這篇文章主要介紹了Java中時間戳的獲取和轉(zhuǎn)換的示例分析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

日期時間是Java一個重要的數(shù)據(jù)類型,常見的日期時間格式通常為“yyyy-MM-dd HH:mm:ss”,但是計算機中存儲的日期時間并非字符串形式,而是長整型的時間戳。因為字符串又占用空間又難以運算,相比之下,長整型只占用四個字節(jié),普通的加減乘除運算更是不在話下,所以時間戳是最佳的日期時間存儲方案。
獲取時間戳的代碼很簡單,只需調(diào)用System類的currentTimeMillis方法即可,如下所示:

// 從System類獲取當前的時間戳
long timeFromSystem = System.currentTimeMillis();
System.out.println("timeFromSystem="+timeFromSystem);

眾所周知,時間戳以毫秒為單位,為了求得它的計時起點,可以將其轉(zhuǎn)換時間單位,先把毫秒的數(shù)量轉(zhuǎn)成秒的數(shù)量,再把秒的數(shù)量轉(zhuǎn)成分鐘的數(shù)量,再把分鐘的數(shù)量轉(zhuǎn)成小時的數(shù)量,再把小時的數(shù)量轉(zhuǎn)成天的數(shù)量,最后把天的數(shù)量轉(zhuǎn)成年的數(shù)量。不過每年的天數(shù)不固定,像平年有365天,閏年有366天,按照四年一閏,平均每年的天數(shù)=(365+365+365+366)/4=365.25。于是把時間戳轉(zhuǎn)為年份數(shù)量的代碼就成了下面這樣:

int years = (int) (timeFromSystem/1000/60/60/24/365.25);
System.out.println("years="+years);

運行上述轉(zhuǎn)換代碼,可見如下的輸出日志:

timeFromSystem=1595578123444
years=50

由于當前年份是2020,從2020往前倒推50年,正好是1970年,原來時間戳是從1970年開始累加的呀。
通過System類只是獲取時間戳的第一種方式,正如茴香豆的茴有四種寫法那樣,時間戳也有四種獲取方式,除了之前提到的System類,還有下列三種時間戳獲取方式:

1、從Date實例獲取時間戳

調(diào)用Date實例的getTime方法即可獲得對應(yīng)的時間戳,獲取代碼示例如下:

// 從日期實例獲取對應(yīng)的時間戳
long timeFromDate = new Date().getTime();
System.out.println("timeFromDate="+timeFromDate);

2、從Calendar實例獲取時間戳

調(diào)用Calendar實例的getTimeInMillis方法即可獲得對應(yīng)的時間戳,獲取代碼示例如下:

// 從日歷實例獲取對應(yīng)的時間戳
long timeFromCalendar = Calendar.getInstance().getTimeInMillis();
System.out.println("timeFromCalendar="+timeFromCalendar);

3、從LocalDateTime實例獲取時間戳

從LocalDateTime獲取時間戳稍微麻煩些,得先把LocalDateTime實例轉(zhuǎn)為Instant實例,再調(diào)用Instant實例的toEpochMilli方法獲得對應(yīng)的時間戳,獲取代碼示例如下:

// 從本地日期時間實例獲取對應(yīng)的時間戳
LocalDateTime localDateTime = LocalDateTime.now();
Instant instant1 = localDateTime.toInstant(ZoneOffset.ofHours(8));
long timeFromLocal1 = instant1.toEpochMilli();
System.out.println("timeFromLocal1="+timeFromLocal1);

上面獲取代碼基于北京時間,所以轉(zhuǎn)為Instant實例時使用了東八區(qū),倘若在東八區(qū)以外的其他地區(qū)運行上述代碼,就無法得到正確的當?shù)貢r間戳,此時要先設(shè)置當?shù)氐哪J時區(qū),再將LocalDateTime實例轉(zhuǎn)為Instant實例,獲取代碼示例如下:

Instant instant2 = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
long timeFromLocal2 = instant1.toEpochMilli();
System.out.println("timeFromLocal2="+timeFromLocal2);

盡管時間戳的獲取方式多達四種,然而最高效的還是第一種System方式,它不但代碼最簡潔,時間消耗也最小。

有了時間戳之后,還能將它轉(zhuǎn)換為對應(yīng)的日期、日歷和本地日期時間。轉(zhuǎn)換過程說明如下:
1、把時間戳轉(zhuǎn)換為Date類型,調(diào)用Date實例的setTime方法即可。
2、把時間戳轉(zhuǎn)換為Calendar類型,調(diào)用Calendar實例的setTimeInMillis方法即可。
3、把時間戳轉(zhuǎn)換為LocalDateTime類型,先調(diào)用Instant類的ofEpochMilli方法,把時間戳轉(zhuǎn)成Instant實例;再調(diào)用LocalDateTime類的ofInstant方法,把Instant實例轉(zhuǎn)成LocalDateTime實例。
下面是把時間戳轉(zhuǎn)為日期、日歷和本地日期時間的代碼例子:

// 從System類獲取當前的時間戳
long timestamp = System.currentTimeMillis();
// 下面把時間戳轉(zhuǎn)換為日期實例
Date date = new Date();
date.setTime(timestamp);
// 下面把時間戳轉(zhuǎn)換為日歷實例
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timestamp);
// 下面把時間戳轉(zhuǎn)換為本地日期時間實例
Instant instant = Instant.ofEpochMilli(timestamp);
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());

到此這篇關(guān)于Java中時間戳的獲取和轉(zhuǎn)換的示例分析的文章就介紹到這了,更多相關(guān)Java 時間戳 獲取轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mybatis中的游標查詢Cursor(滾動查詢)

    Mybatis中的游標查詢Cursor(滾動查詢)

    這篇文章主要介紹了Mybatis中的游標查詢Cursor(滾動查詢),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • SpringBoot使用@Async注解可能會遇到的8大坑點匯總

    SpringBoot使用@Async注解可能會遇到的8大坑點匯總

    SpringBoot中,@Async注解可以實現(xiàn)異步線程調(diào)用,用法簡單,體驗舒適,但是你一定碰到過異步調(diào)用不生效的情況,今天,我就列出90%的人都可能會遇到的8大坑點,需要的朋友可以參考下
    2023-09-09
  • 詳解配置類為什么要添加@Configuration注解

    詳解配置類為什么要添加@Configuration注解

    這篇文章主要介紹了詳解配置類為什么要添加@Configuration注解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • list,set,map,數(shù)組之間的相互轉(zhuǎn)換詳細解析

    list,set,map,數(shù)組之間的相互轉(zhuǎn)換詳細解析

    以下是對Java中l(wèi)ist,set,map,數(shù)組之間的相互轉(zhuǎn)換進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-09-09
  • SpringBoot程序打包失敗(.jar中沒有主清單屬性)

    SpringBoot程序打包失敗(.jar中沒有主清單屬性)

    在學習SpringBoot,打包SpringBoot程序后,在cmd運行出現(xiàn)了 某某某.jar中沒有注清單屬性,本文就來介紹一下原因以及解決方法,感興趣的可以了解一下
    2023-06-06
  • SpringSecurity Oauth2訪問令牌續(xù)期問題

    SpringSecurity Oauth2訪問令牌續(xù)期問題

    這篇文章主要介紹了SpringSecurity Oauth2訪問令牌續(xù)期問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Spring Boot中slf4j日志依賴關(guān)系示例詳解

    Spring Boot中slf4j日志依賴關(guān)系示例詳解

    在項目開發(fā)中,記錄日志是必做的一件事情。而當我們使用Springboot框架時,記錄日志就變得極其簡單了。下面這篇文章主要給大家介紹了關(guān)于Spring Boot中slf4j日志依賴關(guān)系的相關(guān)資料,需要的朋友可以參考下
    2018-11-11
  • 使用迭代器模式來進行Java的設(shè)計模式編程

    使用迭代器模式來進行Java的設(shè)計模式編程

    這篇文章主要介紹了使用迭代器模式來進行Java的設(shè)計模式編程,文中對迭代器模式中的容器封裝方面的知識進行了講解,需要的朋友可以參考下
    2016-02-02
  • 使用maven命令安裝jar包到本地倉庫的方法步驟

    使用maven命令安裝jar包到本地倉庫的方法步驟

    這篇文章主要介紹了使用maven命令安裝jar包到本地倉庫的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Java 多線程并發(fā)AbstractQueuedSynchronizer詳情

    Java 多線程并發(fā)AbstractQueuedSynchronizer詳情

    這篇文章主要介紹了Java 多線程并發(fā)AbstractQueuedSynchronizer詳情,文章圍繞主題展開想象的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-06-06

最新評論

栾城县| 丰台区| 灵武市| 东明县| 仙游县| 海晏县| 中牟县| 大庆市| 宁波市| 满城县| 禹城市| 灵寿县| 娱乐| 伊宁县| 灌云县| 中卫市| 县级市| 上蔡县| 黄冈市| 汾阳市| 修武县| 渭南市| 嵩明县| 长宁区| 含山县| 神木县| 南昌县| 吉安市| 运城市| 栾城县| 扶绥县| 饶阳县| 兴国县| 博乐市| 子洲县| 巢湖市| 噶尔县| 康定县| 江都市| 修武县| 襄城县|