天天看点

JS 时间与时间戳转换(详解)

判断一个变量是否是日期格式

var aa =new Date();
    if(aa.constructor==Date){
        alert("!");
    }           

获取时间

1)new Date( ); (当前时间)

2)new Date(“month dd,yyyy hh:mm:ss”); (以字符串形式创建日期对象)

例:var aa =new Date(“Jan 2,2008 19:41:40”);

var aa=new Date(“2008-1-2 19:41:40”);

可以只写年月日

3)new Date(yyyy,mth,dd,hh,mm,ss); (年月日 必选,时分秒毫秒 选填)

获取、设置时间对象中的年、月、日

var myDate = new Date();
          myDate.getYear();        //获取当前年份(2位)
          myDate.getFullYear();    //获取完整的年份(4位,1970-????)
          myDate.getMonth();      //获取当前月份(0-11,0代表1月)
          myDate.getDate();        //获取当前日(1-31)
          myDate.getDay();        //获取当前星期X(0-6,0代表星期天)
          myDate.getTime();        //获取当前时间(从1970.1.1开始的毫秒数)
          myDate.getHours();      //获取当前小时数(0-23)           

set同理

unix时间戳

unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数
           

时间转毫秒

parse()

可解析时间格式的字符串,时间。返回一个毫秒数(指定的日期和时间据 1970/1/1 午夜(GMT 时间)之间的毫秒数。)

精准到秒,毫秒为000

Date.parse() 是 Date 对象的静态方法。
var v = Date.parse("Jul 8, 2005");
var b = Date.parse("2017-04-18 09:16:15");
var aa =new Date();
d.innerHTML = Date.parse(aa);           

getTime() 返回一个时间戳(指定的日期和时间据 1970/1/1 午夜(GMT 时间)之间的毫秒数。)

var aa =new Date();
c.innerHTML = aa.getTime();
var timestamp = (new Date()).valueOf();              

作用同getTime() 可判断毫秒

getTime比pares精准,parse到秒,gettime到毫秒

时间戳转时间 (时间格式字符串)

//时间戳转时间   格式字符串
function fmtDate(obj){ 
​
var date = new Date(obj);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
var h = date.getHours();
h = h < 10 ? ('0' + h) : h;
var minute = date.getMinutes();
var second = date.getSeconds();
minute = minute < 10 ? ('0' + minute) : minute;
second = second < 10 ? ('0' + second) : second;
return y + '-' + m + '-' + d +' '+h+':'+minute+':'+second;
​
};           

比较两个时间相差几天、小时、分

function DateMin(sDate1, sDate2) { //sDate1和sDate2是yyyy-MM-dd格式
​
        var dateSpan,
            tempDate,
            iDays;
        sDate1 = Date.parse(sDate1);
        sDate2 = Date.parse(sDate2);
        dateSpan = sDate2 - sDate1;
        dateSpan = Math.abs(dateSpan);
        iDays = Math.floor(dateSpan / (3600 * 1000));//自己改成天、小时、分
        return iDays
    }           

比较两个时间大小

1)换成毫秒比较

获得一个日期几天后或者几天前的日期(小时,分)

var newdate = new Date(); 
    var num =1;
    var endtime = newdate.getTime() + (num * 24 * 60 * 60 * 1000);  
//时间戳格式。
  var d=new Date(date); 
  d.setDate(d.getDate()+days); //时间、分钟同理