Java獲取當前時間的時間戳(13位和10位)
背景:項目中正好用到時間戳,但是自己手寫還記不住,索性就記錄下來吧,要不然總是百度,??
13位的時間戳的三種方式
long time1 = System.currentTimeMillis(); // long time2 = Calendar.getInstance().getTimeInMillis(); // long time3 = new Date().getTime();
運行完上述代碼,顯示如下;
time1: 1684398076253
time2: 1684398076253
time3: 1684398076253
10位的時間戳的三種方式
long time1 = System.currentTimeMillis() / 1000; // long time2 = Calendar.getInstance().getTimeInMillis() / 1000; // long time3 = new Date().getTime() / 1000;
運行完上述代碼,顯示如下;
time1: 1684398346
time2: 1684398346
time3: 1684398346
java時間戳 10位和13位分別是怎么來的?
最近遇到一個比較頭疼的問題。
語言是java,將當前時間(new Date())set進bean中,然后使用fastjson將bean轉換成json,存放在redis中。
但問題就來了,首先時間yyyy-mm-dd hh:mm:ss格式轉換成json會自動轉成時間戳,13位的,
而ios端只能解析10位的時間戳。
問題1:為什么會生成13位的時間戳,13位的時間戳和10時間戳分別是怎么來的
經過百度得知,原來java的date默認精度是毫秒,也就是說生成的時間戳就是13位的,
而像c++或者php生成的時間戳默認就是10位的,因為其精度是秒。
問題2:13位時間戳如何轉換成10位時間戳
本來以為java中有設置可以修改其時間精度,后來在百度上沒有找到,就只能采用其它方法來轉化,這里提供兩種方式來轉換。
第一種:通過substring方法,將13位的時間戳最后三位數字截取
第二種:將13位時間戳除以1000取整。
ps:個人覺得這兩種方法好low,目前沒有更好的方法
另外提供一段時間戳轉時間的代碼:
/**
* 時間戳轉時間(10位時間戳)
* @param time
* @return
*/
public static String timestampToDate(long time) {
String dateTime;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long timeLong = Long.valueOf(time);
dateTime = simpleDateFormat.format(new Date(timeLong * 1000L));
return dateTime;
}到此這篇關于Java獲取當前時間的時間戳(13位和10位)的文章就介紹到這了,更多相關Java獲取當前時間時間戳內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot使用jasypt加解密密碼的實現方法(二)
這篇文章主要介紹了SpringBoot使用jasypt加解密密碼的實現方法(二),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
SpringCloud網關(Zuul)如何給多個微服務之間傳遞共享參數
這篇文章主要介紹了SpringCloud網關(Zuul)如何給多個微服務之間傳遞共享參數,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03

