首页 > 技术文章 > JS时间格式和时间戳的相互转换

yunshangwuyou 2019-05-23 17:29 原文

时间戳转化为日期的方式

 

var timestamp = 1527521052;
 
var newDate = new Date();
 
newDate.setTime(timestamp * 1000);
 
// Mon May 28 2018
console.log(newDate.toDateString());
 
// Mon, 28 May 2018 15:24:12 GMT
console.log(newDate.toGMTString());
 
// 2018-05-28T15:24:12.000Z
console.log(newDate.toISOString());
 
// 2018-05-28T15:24:12.000Z
console.log(newDate.toJSON());
 
// 2018/5/28
console.log(newDate.toLocaleDateString());
 
// 2018/5/28 下午11:24:12
console.log(newDate.toLocaleString());
 
// 下午11:24:12
console.log(newDate.toLocaleTimeString());
 
// Mon May 28 2018 23:24:12 GMT+0800 (中国标准时间)
console.log(newDate.toString());
 
// 23:24:12 GMT+0800 (中国标准时间)
console.log(newDate.toTimeString());
 
// Mon, 28 May 2018 15:24:12 GMT
console.log(newDate.toUTCString());

 

 

 

1.JS获取当前时间( 年-月-日 时:分:秒):

function getNowFormatDate() {//获取当前时间
  var date = new Date();
  var seperator1 = "-";
  var seperator2 = ":";
  var month = date.getMonth() + 1<10? "0"+(date.getMonth() + 1):date.getMonth() + 1;
  var strDate = date.getDate()<10? "0" + date.getDate():date.getDate();
  var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
    + " " + date.getHours() + seperator2 + date.getMinutes() + seperator2 + date.getSeconds();
  return currentdate;
}

2.JS获取当前时间戳的方法

 

//方法一
var timestamp = (new Date()).getTime();
console.log(timestamp); //1495302061441

//方法二
var timestamp2 = (new Date()).valueOf();
console.log(timestamp2); //1495302061447

//方法三
var timestamp3 = Date.parse(new Date());
console.log(timestamp3);//1495302061000

第一种和第二种是获取了当前毫秒的时间戳
最后一种获取的时间戳是把毫秒改成000显示

 

 

 

3.时间戳转化成时间格式

 

!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var o=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Date.prototype.Format=function(e){var t="";switch(this.getDay()){case 0:t="星期日";break;case 1:t="星期一";break;case 2:t="星期二";break;case 3:t="星期三";break;case 4:t="星期四";break;case 5:t="星期五";break;case 6:t="星期六"}var n={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),w:t};for(var r in/(y+)/.test(e)&&(e=e.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length))),n)new RegExp("("+r+")").test(e)&&(e=e.replace(RegExp.$1,1==RegExp.$1.length?n[r]:("00"+n[r]).substr((""+n[r]).length)));return e}}return r(e,[{key:"convert",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"y-m-d h:m:s";return"y-m-d h:m:s"==t?new Date(e).Format("yyyy-MM-dd hh:mm:ss"):"y-m-d"==t?new Date(e).Format("yyyy-MM-dd"):new Date(e).Format(t)}},{key:"getAppointDate",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments[2],r=new Date,o=this.convert(r,n);if("w"==e){var a=new Date(r-6048e5*t);o=this.convert(a,n)}else"m"==e?(r.setMonth(r.getMonth()-t),o=this.convert(r,n)):"y"==e&&(r.setYear(r.getFullYear()-t),o=this.convert(r,n));return o}}]),e}();window.dateConvert=o}]);

//    调用构造函数
let DC = window.dateConvert;
//    实例化
let dateFun = new DC()
//    常用方法的简写
let dateVal1 = dateFun.convert(new Date(),'y-m-d');//2019-05-23
let dateVal2 = dateFun.convert(new Date(),'y-m-d h:m:s');//2019-05-23 17:17:42
//    常规方法示例
let dateVal3 = dateFun.convert(1323122444323,'yyyy-MM-dd hh:mm:ss w');//2011-12-06 06:00:44 星期二
let dateVal4 = dateFun.convert(new Date(),'yyyy-MM-dd hh:mm:ss w');//2019-05-23 17:17:42 星期四
let dateVal5 = dateFun.convert(new Date(),'yyyy-MM-dd hh:mm:ss');//2019-05-23 17:17:42
let dateVal6 = dateFun.convert(new Date(),'yyyy-MM-dd');//2019-05-23
let dateVal7 = dateFun.convert(new Date(),'w');//星期四
let dateVal8 = dateFun.convert(new Date(),'MM');//05月
let dateVal9 = dateFun.convert(new Date(),'yyyy');//年份
console.log(dateVal1);
console.log(dateVal2);
console.log(dateVal3);
console.log(dateVal4);
console.log(dateVal5);
console.log(dateVal6);
console.log(dateVal7);
console.log(dateVal8);
console.log(dateVal9);


// 时间设置

  function getLocalTime(i) {
    if (typeof i !== "number") {
    return new Date();
  }
    var d = new Date();
    var len = d.getTime();
    var offset = d.getTimezoneOffset() * 60000;
    var utcTime = len + offset;
    return new Date(utcTime + 3600000 * i);
}


  var timezone = -2; // 时区 : 东区时区1~12 西区时区-1~-12
    var date;

    date = getLocalTime(timezone).toString().split("GMT+")[0].toString();
    $("#showdate").html(date);
    let dateVal2 = dateFun.convert(date,'y-m-d h:m:s');
    console.log(dateVal2)

 

4.比对时间大小

//时间大小比对
    function checkDate(date1, date2) {
        var oDate1 = new Date(date1);
        var oDate2 = new Date(date2);
        if (oDate1.getTime() >= oDate2.getTime()) {
            return false;
        } else {
            return true;
        }
    }
console.log(checkDate('2018-09-10 11:12:12', '2019-12-15 12:12:12'))  //ture

 

5.校验时间格式

//验证时间格式
    function strDateTime(str) {
        var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
        var r = str.match(reg);
        if (r == null) return false;
        var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6], r[7]);
        return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6] && d.getSeconds() == r[7]);
    }

 

6.时间转换时间戳

// 也很简单
function timestamp(strtime){

var date = new Date(strtime); 
//传入一个时间格式,如果不传入就是获取现在的时间了,这样做不兼容火狐。
// Date()参数形式有7种
// new Date("month dd,yyyy hh:mm:ss");=>new Date("September 16,2016 14:15:05");
// new Date("month dd,yyyy");=>new Date("September 16,2016");
// new Date("yyyy/MM/dd hh:mm:ss");=>new Date("2016/09/16 14:15:05");
// new Date("yyyy/MM/dd");=>new Date("2016/09/16");
// new Date(yyyy,mth,dd,hh,mm,ss);=>new Date(2016,8,16,14,15,5); => 月份从0~11
// new Date(yyyy,mth,dd);=>new Date(2016,8,16);
// new Date(ms);=>new Date(1474006780);
// 可以这样做
var date = new Date(strtime.replace(/-/g, '/'));
 
// 有三种方式获取,在后面会讲到三种方式的区别
time1 = date.getTime();//精确到毫秒:1398250549123
time2 = date.valueOf();//精确到毫秒:1398250549123
time3 = Date.parse(date);//只能精确到秒,毫秒将用0来代替:1398250549000
console.log(time1,time2,time3)//1398250549012 1398250549012 1398250549000
return time1;
}
console.log(timestamp('2014-04-23 18:55:49:12'))//1398250549012

 7.new Date()转时间格式(yyyy-MM-dd hh:mm:ss格式,简单版)

Date.prototype.format = function(fmt) { 
     var o = { 
        "M+" : this.getMonth()+1,                 //月份
        "d+" : this.getDate(),                    //
        "h+" : this.getHours(),                   //小时
        "m+" : this.getMinutes(),                 //
        "s+" : this.getSeconds(),                 //
        "q+" : Math.floor((this.getMonth()+3)/3), //季度
        "S"  : this.getMilliseconds()             //毫秒
    }; 
    if(/(y+)/.test(fmt)) {
            fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
    }
     for(var k in o) {
        if(new RegExp("("+ k +")").test(fmt)){
             fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
         }
     }
    return fmt; 
}        
var times = new Date('Fri May 31 2019 11:51:47 ').format("yyyy-MM-dd hh:mm:ss");
console.log(times)//2019-05-31 11:51:47

 8.js获取服务器当前时间,而非系统时间

  

Date.prototype.format = function(fmt) { 2
     var o = { 
        "M+" : this.getMonth()+1,                 //月份
        "d+" : this.getDate(),                    //
        "h+" : this.getHours(),                   //小时
        "m+" : this.getMinutes(),                 //
        "s+" : this.getSeconds(),                 //
        "q+" : Math.floor((this.getMonth()+3)/3), //季度
        "S"  : this.getMilliseconds()             //毫秒
    }; 
    if(/(y+)/.test(fmt)) {
            fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
    }
     for(var k in o) {
        if(new RegExp("("+ k +")").test(fmt)){
             fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
         }
     }
    return fmt; 
}     
function getServerDate(){
    return new Date($.ajax({async: false}).getResponseHeader("Date"));
}
 console.log(getServerDate());   
function getLocalTime(i) {
    if (typeof i !== "number") {
    return new Date();
      }
    var d = getServerDate();
    var len = d.getTime();
    var offset = d.getTimezoneOffset() * 60000;
    var utcTime = len + offset;
    return new Date(utcTime + 3600000 * i);
}

/*
    **@parmas**


*/
function eachAreaTime(Tzone){
     var timezone = Tzone; // 时区 : 东区时区1~12 西区时区-1~-12
    var date,localTime;
    date = getLocalTime(timezone).toString().split("GMT+")[0].toString();
        localTime =new Date(date).format("yyyy-MM-dd hh:mm:ss");//如果是mac系统下兼容safari浏览器,最好改为:format("yyyy/MM/dd hh:mm:ss")
        return localTime;
}
console.log('北京,菲律宾,马来西亚,台湾时间',eachAreaTime(8));
console.log('印度时间',eachAreaTime(5.5));
console.log('印尼,泰国,越南时间',eachAreaTime(7))

  Fri May 31 2019 23:24:49 GMT+0800 (中国标准时间)
  VM311:48 北京,菲律宾,马来西亚,台湾时间 2019-05-31 23:24:49
  VM311:49 印度时间 2019-05-31 20:54:49
  VM311:50 印尼,泰国,越南时间 2019-05-31 22:24:49

 

推荐阅读