每天記錄學習的新知識:異常,當後臺返回時間戳爲String,提取後轉換時間錯誤

前提:

因爲Ios不能從後臺獲取long型時間戳,所以用String包裹。

使用:

long start = Long.valueOf(bean.getStartTime()) * 1000;
long end = Long.valueOf(bean.getEndTime()) * 1000;
time.setText(String.format("%s - %s", sdf.format(new Date(start)), sdf.format(new Date(end))));

爲了適配ios,所以後臺傳到前臺的時間戳是10位(秒)。
因爲我們用的是毫秒,所以*1000。

錯誤使用導致時間錯誤:

遇見問題的原因是因爲使用了Integer從String內接出時間戳,如下:

LogUtils.i(TAG, "Long.valueOf() =" + Long.valueOf(record.getStartTime())); 
LogUtils.i(TAG, "Integer.valueOf() =" + Integer.valueOf(record.getStartTime())); 

Log輸出:

 Long.valueOf() =1578883508
 Integer.valueOf() =1578883508

雖然現實時間一致,但是設置給date後獲取的時間卻不相同。

解析源碼:

發生在date內部,爲啥以後再說吧,現在就找到getTime(),看不到源碼。希望大神留言,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章