日期时间的转换

7次阅读

共计 1449 个字符,预计需要花费 4 分钟才能阅读完成。

时间戳是什么
时间戳是指自 1970 年 1 月 1 日 00:00:00 (世界标准时间) 起经过的毫秒数。目前大部分情况下为 13 位,但有的时候服务器会省略存储 10 位,即存储的是秒数,因为日常使用不需要那么精确到秒。
关于 Date 函数
Date 这里先不赘述,可自行阅读文档。
我们现在只需要知道,向 Date 里传入时间戳,我们会得到一个时间对象
var time = new Date(1453094034000);
这个时间对象依旧不是我们想要的时间格式,就需要我们自行对其进行转换。
因此我们可以使用 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 是可以识别的

方法如下
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());

正文完
 0