将Date对象转换成时间戳
第一种方法,使用Number()方法,精确到毫秒
- var newDay = new Date();
- console.log(Number(newDay));
第二种方法是,使用日期对象Date.parse()方法,精确到秒
- var newDay = new Date();
- console.log(Date.parse(newDay));
也会返回当前时间的时间戳
第三种方法是利用转义符进行转义
- var newDay = +new Date();
- console.log(newDay);
第四种方法是getTime(),精确到毫秒
var str = '2013-08-30'; // 日期字符串
str = str.replace(/-/g,'/'); // 将-替换成/,因为下面这个构造函数只支持/分隔的日期字符串
var date = new Date(str); // 构造一个日期型数据,值为传入的字符串
在上面,new Date(str)构造了一个日期,参数str至少要提供年月日三部分,也就是形如“2013/03/08”的字符串,不能是"2013/03",否则将得到一个NaN。此时构造出来的时间是:2013/03/08 00:00:00。同时你还可以传入小时、分钟和秒数,但不能只传入小时,比如“2013/03/08 17”,这样的参数同样会得到一个NaN。参数可以是“2013/03/08 17:20”或者“2013/03/08 17:20:05”,这样都可以得到正确的时间,其中如果秒数没给出,则默认为0。
此时得到的是日期型数据,如果要得到上面所谓的时间戳,可以这样:
var time = date.getTime();
这样得到的是一个数值,表示的是从1970年1月1日0点0分0秒到date那一刻的 毫秒 数,如果把这个数字除以1000,就得到了秒数,同样继续除以60,得到分钟,再除以60得到小时等等
第五种方法是(new Date).valueOf(),精确到毫秒
两种方法对比,
第一种使用数字对象的方法返回的时间戳,精确到了毫秒,而日期对象的Date.parse()方法只精确到了秒,后三位都是用的0填充的,所以个人推荐第一种
将时间戳转换成Date对象
- var newDate = new Date(时间戳); //实例化一个Date对象,将时间戳直接传入,注意一定是13位
- var timestamp3 = 1403058804000; //声明一个时间戳
- var newDate = new Date(); //实例化一个Date对象
- newDate.setTime(timestamp3); //设置Date对象的时间为时间戳的时间