码迷,mamicode.com
首页 > 其他好文 > 详细

项目中的那些事---时间戳(一)

时间:2018-04-26 01:29:54      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:mon   分享图片   系统   alt   func   unix时间   mat   方法   bubuko   

一、时间戳

简单讲,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中日期和时间戳的转化,如有错误之处,感谢指正!

项目中的那些事---时间戳(一)

标签:mon   分享图片   系统   alt   func   unix时间   mat   方法   bubuko   

原文地址:https://www.cnblogs.com/hellowhy/p/8878046.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!