java new Date().getTime() 时间戳问题

我用 new Date().getTime() 显示的是 1410686873996 这样 13位

我看有些网站上是 1410686211 这样的,10位

这个是怎么来的,怎么把 1410686873996 变成 10 位的

我这个显示的成了44809年了

阅读 70k
4 个回答

后面三位是毫秒,没用的话可以截下去,如果是Number就除以1000,如果是String就取前length-3位的子串。

13位数字,单位是毫秒
10位数字,单位是秒
JavaJavaScript都支持时间类型Date,他们的getTime方法返回的是毫秒数。
10位数字有可能是C中的ctime等获得的,参考这篇文档http://linux.die.net/man/3/ctime

首先,如何判断一个表示时间的数字的单位是秒还是毫秒?
先说结论:
10位数字,单位是秒
13位数字,单位是毫秒
为什么:
一般计算机中表示时间的数字是指1970年1月1日到现在一共经历了多长时间(时间戳)。以现在2017年6月30号举例,从1970年到现在大约过去了47.5年。
那么以秒来计算
当前的时间戳大约为 47.5年 * 365天 * 24小时 * 60分钟 * 60 秒 = 1.49e9 ,也就是一个十位的数字。如果要变成一个十一位的数字,那大约还要花269年。
所以,当你看到一个表示时间10位数字,那么单位就是秒。
进一步推理,如果是毫秒值 = 秒 * 1000,所以毫秒是13位数字。

再回到你的问题,显然你是按秒为单位去处理了一个毫秒的值, 你只需要按照毫秒来处理这个数字就好了,或者先用这个毫秒值除以1000再按秒去处理,但这样会失去毫秒的精度。

新手上路,请多包涵

可以看下这个

currentShiYanTime = new Date().getTime();
                                        
t = currentShiYanTime / 100;
$("#shiyan-time").text("已用时:" + (Math.floor(t / 36000)) + "时" + Math.floor((t % 36000) / 600) + "分" + ((t % 600) / 10).toFixed(1) + "秒");
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题