亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Java中時間戳的獲取和轉換的示例分析

瀏覽:66日期:2022-08-28 09:54:52

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

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

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

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

運行上述轉換代碼,可見如下的輸出日志:

timeFromSystem=1595578123444years=50

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

1、從Date實例獲取時間戳

調用Date實例的getTime方法即可獲得對應的時間戳,獲取代碼示例如下:

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

2、從Calendar實例獲取時間戳

調用Calendar實例的getTimeInMillis方法即可獲得對應的時間戳,獲取代碼示例如下:

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

3、從LocalDateTime實例獲取時間戳

從LocalDateTime獲取時間戳稍微麻煩些,得先把LocalDateTime實例轉為Instant實例,再調用Instant實例的toEpochMilli方法獲得對應的時間戳,獲取代碼示例如下:

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

上面獲取代碼基于北京時間,所以轉為Instant實例時使用了東八區,倘若在東八區以外的其他地區運行上述代碼,就無法得到正確的當地時間戳,此時要先設置當地的默認時區,再將LocalDateTime實例轉為Instant實例,獲取代碼示例如下:

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

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

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

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

到此這篇關于Java中時間戳的獲取和轉換的示例分析的文章就介紹到這了,更多相關Java 時間戳 獲取轉換內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 日韩一级黄色片 | 国产视频色 | 一级毛片一级毛片一级毛片一级毛片 | 日韩电影免费在线观看中文字幕 | 久久免费高清视频 | 色综合色狠狠天天久久婷婷基地 | 日本黄视频在线观看 | 欧美日本不卡 | 欧美性视频网 | 亚洲线精品久久一区二区三区 | 一级做人爰a全过程免费视频 | 国产大片免费天天看 | qvod激情视频在线观看 | 国产高清国内精品福利99久久 | 特级毛片免费视频播放 | 国产一区二区三区在线视频 | 亚洲国产一成人久久精品 | 六月丁香啪啪六月激情 | 国产高清免费影视在线观看 | 黄色片国产 | 欧美日韩国产不卡在线观看 | 亚洲黄色免费网址 | 色综合久久九月婷婷色综合 | 国产高清一级视频在线观看 | 国产18岁| 1024国产手机视频基地 | 国产美腿丝袜福利视频在线观看 | 久久午夜羞羞影院免费观看 | 妖精视频国产 | 亚洲在线免费 | 女人午夜啪啪性刺激免费看 | 免费一区二区三区在线视频 | 一级毛片免费视频 | 全黄一级裸片视频在线观看 | 日本特黄特色高清免费视频 | 91久久精品一区二区三区 | 黄色美女免费 | 九九99在线视频 | 九九黄色大片 | 欧美精品白嫩bbwbbwbbw | 国产精品吹潮香蕉在线观看 |