js 将Date 日期对象与时间戳互相转换

将Date对象转换成时间戳

第一种方法,使用Number()方法,精确到毫秒

[javascript]  view plain  copy
  1. var newDay = new Date();  
  2. console.log(Number(newDay));  
返回当前的时间的时间戳

第二种方法是,使用日期对象Date.parse()方法,精确到秒

[javascript]  view plain  copy
  1. var newDay = new Date();  
  2. console.log(Date.parse(newDay));  

也会返回当前时间的时间戳

第三种方法是利用转义符进行转义

[javascript]  view plain  copy
  1. var newDay = +new Date();  
  2.                 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对象

[javascript]  view plain  copy
  1. var newDate = new Date(时间戳);  //实例化一个Date对象,将时间戳直接传入,注意一定是13位  
或者
[javascript]  view plain  copy
  1. var timestamp3 = 1403058804000;  //声明一个时间戳  
  2. var newDate = new Date();  //实例化一个Date对象  
  3. newDate.setTime(timestamp3); //设置Date对象的时间为时间戳的时间  

你可能感兴趣的:(javascript)