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


    一、时间戳

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

  • 相关阅读:
    一起谈.NET技术,C#调试心经(续) 狼人:
    基于xmpp openfire smack开发之openfire介绍和部署[1]
    mysql学习笔记二
    使用jQuery实现的网页版的个人简历
    基于xmpp openfire smack开发之smack类库介绍和使用[2]
    基于色彩恒常( color constancy)特性的FrankleMcCann Retinex图像增强。
    The import org.cocos2dx.lib cannot be resolved
    C++编译器的递归深度与程序优化思考
    jquery实战视频教程_选项卡效果一
    编译器是怎样工作的?用lex和yacc 写一个计算器(2)
  • 原文地址:https://www.cnblogs.com/hellowhy/p/8878046.html
Copyright © 2020-2023  润新知