项目中的那些事---时间戳(一)
一、时间戳
简单讲,unix时间戳就是从1970-01-01开始所经过的秒数,什么时候获取时间戳,就是到那个时间点所经历的秒数。
二、JavaScript获取时间戳
根据时间戳的定义,可以使用javascript中的几个方法来获取系统当前的时间戳:
1、getTime()
w3c school的解释如下:
根据上面的定义,我们可以获取系统当前的时间戳:
var timeStamp1 = new Date().getTime(); console.info(timeStamp1);
输出:1524662952173
2、parse()
根据上面的解释,parse方法返回的是指定日期和时间到1970年1月1日的毫秒数,所以只要将日期指定为系统当前时间,就能获取系统当前的时间戳。
var timeStamp2 = Date.parse(new Date()); console.info(timeStamp2);
输出:1524662952000
3、valueOf()
该方法返回的是Date对象的原始值,且和getTime返回相同的值,所以只要Date对象为系统当前时间,就能获取系统当前的时间戳
var timeStamp3 = (new Date()).valueOf(); console.info(timeStamp3);
输出:1524662952176
以上是获取系统当前时间的时间戳,如果要获取指定时间的时间戳,只需要设置指定日期,然后用对应的日期对象进行操作即可,不再赘述。
从上面的结论可以看出,通过parse方法获取的时间戳后三位都是0,如果用更多的数据测试,都会发现该方法返回的时间戳没有其他两种方法精确,
因为其后三位始终是0.
二、将时间戳转化为日期
上面介绍的是获取时间戳,也就是日期转时间戳的方法,再来学习一下时间戳转日期的方法。
转成日期的方法也很简单,只要将时间戳传给Date即可,然后格式化成想要的格式,如YYYY-MM-DD hh:mm:ss
值得注意的一点是,在转日期之前要先判断时间戳是否是13位,如果不是13位,需要将不够的几位在低位用0代替,
例如:时间戳是1234567891 则在传给Date()之前要转成1234567891000
/** * 将unix时间戳转化成日期格式 */ function timestamp2date(timestamp){ var date = new Date(timestamp); var strLen = timestamp.toString().length; //判断时间戳是否不足13位,不足时低位补0,即乘以10的所差位数次方 if( strLen < 13){ var sub = 13 - strLen; sub = Math.pow(10,sub);//计算10的n次方 date = new Date(timestamp*sub); } var y = date.getFullYear()+'-'; var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'; var d = date.getDate() + ' '; var h = date.getHours() + ':'; var m = date.getMinutes() + ':'; var s = date.getSeconds(); return y+M+d+h+m+s; } var ts = timestamp2date(1234567891); console.info(ts);
输出结果:2009-02-14 7:31:31 var ts = timestamp2date(1234567891000); console.info(ts);
输出结果:2009-02-14 7:31:31
为了验证上面的结论,将补0部分去掉,结果如下:
/** * 将unix时间戳转化成日期格式 */ function timestamp2date(timestamp){ var date = new Date(timestamp); var strLen = timestamp.toString().length; //判断时间戳是否不足13位,不足时低位补0,即乘以10的所差位数次方 /* if( strLen < 13){ var sub = 13 - strLen; sub = Math.pow(10,sub);//计算10的n次方 date = new Date(timestamp*sub); } */ var y = date.getFullYear()+'-'; var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'; var d = date.getDate() + ' '; var h = date.getHours() + ':'; var m = date.getMinutes() + ':'; var s = date.getSeconds(); return y+M+d+h+m+s; } var ts = timestamp2date(1234567891); console.info(ts);
输出结果:1970-01-15 14:56:7 var ts = timestamp2date(1234567891000); console.info(ts);
输出结果:2009-02-14 7:31:31
以上就是JavaScript中日期和时间戳的转化,如有错误之处,感谢指正!
本文来自博客园,作者:bug改了我,转载请注明原文链接:https://www.cnblogs.com/hellowhy/p/8878046.html