Re: [问题] 有关转换时间

楼主: LPH66 (-6.2598534e+18f)   2014-06-13 18:31:27
※ 引述《iamsewei (翠玉林志玲)》之铭言:
: 我有一个64bitn windows number 的时间字串
: 1396487878
: 在stackoverflow找到的方法
:

: 却不会使用....
: 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 秒)
作者: iamsewei (少年阿兵)   2014-06-13 18:32:00
感谢你 替我解答

Links booklink

Contact Us: admin [ a t ] ucptt.com