时间戳是什么

时间戳是指自1970年1月1日00:00:00 (世界标准时间) 起经过的毫秒数。
目前大部分情况下为13位,但有的时候服务器会省略存储10位,即存储的是秒数,因为日常使用不需要那么精确到秒。

关于Date函数

Date这里先不赘述,可自行阅读文档。

我们现在只需要知道,向Date里传入时间戳,我们会得到一个时间对象

var time = new Date(1453094034000); 

clipboard.png
这个时间对象依旧不是我们想要的时间格式,就需要我们自行对其进行转换。

因此我们可以使用Date 的方法去获取我们想要的年月日时分秒的数据,来自行组装成我们想要的时间格式。

时间戳转换为日期

ok,我们现在尝试将服务器接收的1453094034000转换为2016-1-18 13:13:54。

明显看出我们需要从时间对象中获取年,月,日,时,分,秒。分别对应Date的以下方法。

date.getFullYear();
date.getMonth();
date.getDate();
date.getHours();
date.getMinutes();
date.getSeconds();

因此,代码如下

var date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
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;

日期转换为时间戳

Date对象给我们提供了一些方法让我们直接将日期转换为时间对象,然后转为时间戳。就不需要我们自己手动去计算日期到底距离那个标准时间多少秒了。

不过,首先需要明白的是,Date目前只识别以下几种类型的字符串或者数字的时间表达方式。我们在上一节所转化的字符串2016-1-18 13:13:54是可以识别的

clipboard.png

方法如下

var t =  new Date('2016-1-18 13:13:54');
return t.getTime();

字符串日期的加减

这里扩展一下经常遇到的情况,即日期的加减。

当然Date也有日期的增减方法方法。

因此,思路是,先将字符串日期转换成时间对象,再利用Date的方法进行时间的加减,改变后,我们再将对象转换成字符串日期即可。

字符串日期转换为时间对象

注意,在时间对象的月份存储中,是以0-11来对应1-12月的,因此,需要注意转换

        var str = '2019-2-1'; // 初始日期
        var date = new Date();

        var initdate = str.split("-");
        date.setFullYear(parseInt(initdate[0]));
        date.setMonth(parseInt(initdate[1]) - 1);
        date.setDate(parseInt(initdate[2]));

时间对象变动后再转为字符串

var num = 10;
date.setMonth(date.getMonth() + num);
console.log(date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate());

aimiy
149 声望3 粉丝

写给自己看,每周一篇文章......因为我发现我做过的东西,过一年不用,就忘的一干二净了......