1. 程式人生 > >java時間戳 10位和13位分別是怎麼來的?

java時間戳 10位和13位分別是怎麼來的?

最近遇到一個比較頭疼的問題,語言是java,將當前時間(new Date())set進bean中,然後使用fastjson將bean轉換成json,存放在redis中,但問題就來了,首先時間yyyy-mm-dd hh:mm:ss格式轉換成json會自動轉成時間戳,13位的,而ios端只能解析10wei的時間戳。
問題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(FORMAT_SEC_FULL);
    long timeLong = Long.valueOf(time);
    dateTime = simpleDateFormat.format(new
Date(timeLong * 1000L)); return dateTime; }