※ 引述《iamsewei (翠玉林志玲)》之銘言:
: 我有一個64bitn windows number 的時間字串
: 1396487878
: 在stackoverflow找到的方法
: http://ppt.cc/Ks6o
: 卻不會使用....
: Date date = new Date((1396487878));
: Log.i("main","cover date= "+date);
: 在android 上面我使用這樣印出來發現時間 是1970....不知道我哪裡有問題
: 希望熟悉的大大可以教一下 感謝Q_Q 網路沒甚麼資料
用回的好了
你可以查一下 Date 的說明
http://docs.oracle.com/javase/7/docs/api/java/util/Date.html
Date(long date) 這個建構子的說明有說到
這個 long 值是以毫秒數為單位
而你的時間是秒數 所以要乘上 1000
另外由於這是一個 64-bit 常數 所以請加上一個 L
(不然 1396487878000 比 2^31-1 = 2147483647 還大
編譯器會告訴你數值超出範圍)
所以你應該要寫成
Date date = new Date(1396487878000L);
另外你引的 stackoverflow 的連結所轉換的是 Windows 的 FILETIME
它的基準點跟單位都跟 Unix timestamp 不同
所以才需要扣掉那個大數字再除以一萬
(其實這裡也可以發現到我上面提的問題:
文中有提 FILETIME 以 100ns (10^-7 秒) 為單位
但是那個回答裡除的數字卻只有一萬
這就代表 Date 建構子需要的時間單位是 10^-3 秒)