js转换Date日期格式 / 时间转换
前端笔记 2017-11-09 17:13:59

JS时间戳,毫秒级,格式化:

JavaScript Code复制内容到剪贴板
  1. function YYformatDate(timeStamp, type, auto) {  
  2.     type = type?type:"Y-m-d H:i:s";  
  3.     auto = auto?auto:false;  
  4.   
  5.     let time = (timeStamp + '').length === 10 ? new Date(parseInt(timeStamp) * 1000) : new Date(parseInt(timeStamp));  
  6.     let _year = time.getFullYear();  
  7.     let _month = (time.getMonth() + 1) < 10 ? '0' + (time.getMonth() + 1) : (time.getMonth() + 1);  
  8.     let _date = time.getDate() < 10 ? '0' + time.getDate() : time.getDate();  
  9.     let _hours = time.getHours() < 10 ? '0' + time.getHours() : time.getHours();  
  10.     let _minutes = time.getMinutes() < 10 ? '0' + time.getMinutes() : time.getMinutes();  
  11.     let _secconds = time.getSeconds() < 10 ? '0' + time.getSeconds() : time.getSeconds();  
  12.     let formatTime = '';  
  13.     let distinctTime = new Date().getTime() - time.getTime();  
  14.   
  15.     if (auto) {  
  16.         if (distinctTime <= (1 * 60 * 1000)) {  
  17.             // console.log('一分钟以内,以秒数计算');  
  18.             let _s = Math.floor((distinctTime / 1000) % 60);  
  19.             formatTime = _s + '秒前';  
  20.         } else if (distinctTime <= (1 * 3600 * 1000)) {  
  21.             // console.log('一小时以内,以分钟计算');  
  22.             let _m = Math.floor((distinctTime / (60 * 1000)) % 60);  
  23.             formatTime = _m + '分钟前';  
  24.         } else if (distinctTime <= (24 * 3600 * 1000)) {  
  25.             // console.log('一天以内,以小时计算');  
  26.             let _h = Math.floor((distinctTime / (60 * 60 * 1000)) % 24);  
  27.             formatTime = _h + '小时前';  
  28.         } else if (distinctTime <= (30 * 24 * 3600 * 1000)) {  
  29.             let _d = Math.floor((distinctTime / (24 * 60 * 60 * 1000)) % 30);  
  30.             formatTime = _d + '天前';  
  31.             // console.log('30天以内,以天数计算');  
  32.         } else {  
  33.             // 30天以外只显示年月日  
  34.             formatTime = _year + '-' + _month + '-' + _date;  
  35.         }  
  36.     } else {  
  37.   
  38.         switch (type) {  
  39.             case 'Y-m-d H:i:s':  
  40.                 formatTime = _year + '-' + _month + '-' + _date + ' ' + _hours + ':' + _minutes + ':' + _secconds;  
  41.                 break;  
  42.             case 'Y-m-d H:i:s zh':  
  43.                 formatTime = _year + '年' + _month + '月' + _date + '日  ' + _hours + ':' + _minutes + ':' + _secconds;  
  44.                 break;  
  45.             case 'Y-m-d H:i':  
  46.                 formatTime = _year + '-' + _month + '-' + _date + ' ' + _hours + ':' + _minutes;  
  47.                 break;  
  48.             case 'Y-m-d H':  
  49.                 formatTime = _year + '-' + _month + '-' + _date + ' ' + _hours;  
  50.                 break;  
  51.             case 'Y-m-d':  
  52.                 formatTime = _year + '-' + _month + '-' + _date;  
  53.                 break;  
  54.             case 'Y-m-d zh':  
  55.                 formatTime = _year + '年' + _month + '月' + _date + '日';  
  56.                 break;  
  57.             case 'Y-m':  
  58.                 formatTime = _year + '-' + _month;  
  59.                 break;  
  60.             case 'Y':  
  61.                 formatTime = _year;  
  62.                 break;  
  63.             case 'm':  
  64.                 formatTime = _month;  
  65.                 break;  
  66.             case 'd':  
  67.                 formatTime = _date;  
  68.                 break;  
  69.             case 'H':  
  70.                 formatTime = _hours;  
  71.                 break;  
  72.             case 'i':  
  73.                 formatTime = _minutes;  
  74.                 break;  
  75.             case 's':  
  76.                 formatTime = _secconds;  
  77.                 break;  
  78.             default:  
  79.                 formatTime = _year + '-' + _month + '-' + _date + ' ' + _hours + ':' + _minutes + ':' + _secconds;  
  80.                 break;  
  81.         }  
  82.     }  
  83.     // 返回格式化的日期字符串  
  84.     return formatTime;  
  85. }  

 

 

 

JS时间戳转换

JavaScript Code复制内容到剪贴板
  1. /**  
  2.  * 时间戳格式化函数  
  3.  * @param  {string} format    格式  
  4.  * @param  {int}    timestamp 要格式化的时间 默认为当前时间  
  5.  * @return {string}           格式化的时间字符串  
  6.  */  
  7. function date(format, timestamp){    
  8.     var a, jsdate=((timestamp) ? new Date(timestamp*1000) : new Date());   
  9.     var pad = function(n, c){   
  10.         if((n = n + "").length < c){   
  11.             return new Array(++c - n.length).join("0") + n;   
  12.         } else {   
  13.             return n;   
  14.         }   
  15.     };   
  16.     var txt_weekdays = ["Sunday""Monday""Tuesday""Wednesday""Thursday""Friday""Saturday"];   
  17.     var txt_ordin = {1:"st", 2:"nd", 3:"rd", 21:"st", 22:"nd", 23:"rd", 31:"st"};   
  18.     var txt_months = ["""January""February""March""April""May""June""July""August""September""October""November""December"];    
  19.     var f = {   
  20.         // Day   
  21.         d: function(){return pad(f.j(), 2)},   
  22.         D: function(){return f.l().substr(0,3)},   
  23.         j: function(){return jsdate.getDate()},   
  24.         l: function(){return txt_weekdays[f.w()]},   
  25.         N: function(){return f.w() + 1},   
  26.         S: function(){return txt_ordin[f.j()] ? txt_ordin[f.j()] : 'th'},   
  27.         w: function(){return jsdate.getDay()},   
  28.         z: function(){return (jsdate - new Date(jsdate.getFullYear() + "/1/1")) / 864e5 >> 0},   
  29.           
  30.         // Week   
  31.         W: function(){   
  32.             var a = f.z(), b = 364 + f.L() - a;   
  33.             var nd2, nd = (new Date(jsdate.getFullYear() + "/1/1").getDay() || 7) - 1;   
  34.             if(b <= 2 && ((jsdate.getDay() || 7) - 1) <= 2 - b){   
  35.                 return 1;   
  36.             } else{   
  37.                 if(a <= 2 && nd >= 4 && a >= (6 - nd)){   
  38.                     nd2 = new Date(jsdate.getFullYear() - 1 + "/12/31");   
  39.                     return date("W", Math.round(nd2.getTime()/1000));   
  40.                 } else{   
  41.                     return (1 + (nd <= 3 ? ((a + nd) / 7) : (a - (7 - nd)) / 7) >> 0);   
  42.                 }   
  43.             }   
  44.         },   
  45.           
  46.         // Month   
  47.         F: function(){return txt_months[f.n()]},   
  48.         m: function(){return pad(f.n(), 2)},   
  49.         M: function(){return f.F().substr(0,3)},   
  50.         n: function(){return jsdate.getMonth() + 1},   
  51.         t: function(){   
  52.             var n;   
  53.             if( (n = jsdate.getMonth() + 1) == 2 ){   
  54.                 return 28 + f.L();   
  55.             } else{   
  56.                 if( n & 1 && n < 8 || !(n & 1) && n > 7 ){   
  57.                     return 31;   
  58.                 } else{   
  59.                     return 30;   
  60.                 }   
  61.             }   
  62.         },   
  63.           
  64.         // Year   
  65.         L: function(){var y = f.Y();return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0},   
  66.         //o not supported yet   
  67.         Y: function(){return jsdate.getFullYear()},   
  68.         y: function(){return (jsdate.getFullYear() + "").slice(2)},   
  69.           
  70.         // Time   
  71.         a: function(){return jsdate.getHours() > 11 ? "pm" : "am"},   
  72.         A: function(){return f.a().toUpperCase()},   
  73.         B: function(){   
  74.             // peter paul koch:   
  75.             var off = (jsdate.getTimezoneOffset() + 60)*60;   
  76.             var theSeconds = (jsdate.getHours() * 3600) + (jsdate.getMinutes() * 60) + jsdate.getSeconds() + off;   
  77.             var beat = Math.floor(theSeconds/86.4);   
  78.             if (beat > 1000) beat -= 1000;   
  79.             if (beat < 0) beat += 1000;   
  80.             if ((String(beat)).length == 1) beat = "00"+beat;   
  81.             if ((String(beat)).length == 2) beat = "0"+beat;   
  82.             return beat;   
  83.         },   
  84.         g: function(){return jsdate.getHours() % 12 || 12},   
  85.         G: function(){return jsdate.getHours()},   
  86.         h: function(){return pad(f.g(), 2)},   
  87.         H: function(){return pad(jsdate.getHours(), 2)},   
  88.         i: function(){return pad(jsdate.getMinutes(), 2)},   
  89.         s: function(){return pad(jsdate.getSeconds(), 2)},   
  90.         //u not supported yet   
  91.           
  92.         // Timezone   
  93.         //e not supported yet   
  94.         //I not supported yet   
  95.         O: function(){   
  96.             var t = pad(Math.abs(jsdate.getTimezoneOffset()/60*100), 4);   
  97.             if (jsdate.getTimezoneOffset() > 0) t = "-" + t; else t = "+" + t;   
  98.             return t;   
  99.         },   
  100.         P: function(){var O = f.O();return (O.substr(0, 3) + ":" + O.substr(3, 2))},   
  101.         //T not supported yet   
  102.         //Z not supported yet   
  103.           
  104.         // Full Date/Time   
  105.         c: function(){return f.Y() + "-" + f.m() + "-" + f.d() + "T" + f.h() + ":" + f.i() + ":" + f.s() + f.P()},   
  106.         //r not supported yet   
  107.         U: function(){return Math.round(jsdate.getTime()/1000)}   
  108.     };   
  109.           
  110.     return format.replace(/[\]?([a-zA-Z])/g, function(t, s){   
  111.         if( t!=s ){   
  112.             // escaped   
  113.             ret = s;   
  114.         } else if( f[s] ){   
  115.             // a date function exists   
  116.             ret = f[s]();   
  117.         } else{   
  118.             // nothing special   
  119.             ret = s;   
  120.         }   
  121.         return ret;   
  122.     });   
  123. }  

 

 

XML/HTML Code复制内容到剪贴板
  1. date('Y-m-d','1350052653');//很方便的将时间戳转换成了2012-10-11   
  2. date('Y-m-d H:i:s','1350052653');//得到的结果是2012-10-12 22:37:33  

 

 

JS获取当前时间,如:2020-08-05 16:17:31 星期四 

JavaScript Code复制内容到剪贴板
  1. function getNowDate() {  
  2.  var date = new Date();  
  3.  var sign1 = "-";  
  4.  var sign2 = ":";  
  5.  var year = date.getFullYear() // 年  
  6.  var month = date.getMonth() + 1; // 月  
  7.  var day  = date.getDate(); // 日  
  8.  var hour = date.getHours(); // 时  
  9.  var minutes = date.getMinutes(); // 分  
  10.  var seconds = date.getSeconds() //秒  
  11.  var weekArr = ['星期一''星期二''星期三''星期四''星期五''星期六''星期天'];  
  12.  var week = weekArr[date.getDay()];  
  13.  // 给一位数数据前面加 “0”  
  14.  if (month >= 1 && month <= 9) {  
  15.   month = "0" + month;  
  16.  }  
  17.  if (day >= 0 && day <= 9) {  
  18.   day = "0" + day;  
  19.  }  
  20.  if (hour >= 0 && hour <= 9) {  
  21.   hour = "0" + hour;  
  22.  }  
  23.  if (minutes >= 0 && minutes <= 9) {  
  24.   minutes = "0" + minutes;  
  25.  }  
  26.  if (seconds >= 0 && seconds <= 9) {  
  27.   seconds = "0" + seconds;  
  28.  }  
  29.  var currentdate = year + sign1 + month + sign1 + day + " " + hour + sign2 + minutes + sign2 + seconds + " " + week;  
  30.  return currentdate;  
  31. }  
  32. console.log(getNowDate());  

 

 

 

 

 

JavaScript Code复制内容到剪贴板
  1. var myDate = new Date();    
  2. myDate.getYear(); //获取当前年份(2位)    
  3. myDate.getFullYear(); //获取完整的年份(4位,1970-????)    
  4. myDate.getMonth(); //获取当前月份(0-11,0代表1月)         // 所以获取当前月份是myDate.getMonth()+1;     
  5. myDate.getDate(); //获取当前日(1-31)    
  6. myDate.getDay(); //获取当前星期X(0-6,0代表星期天)    
  7. myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)    
  8. myDate.getHours(); //获取当前小时数(0-23)    
  9. myDate.getMinutes(); //获取当前分钟数(0-59)    
  10. myDate.getSeconds(); //获取当前秒数(0-59)    
  11. myDate.getMilliseconds(); //获取当前毫秒数(0-999)    
  12. myDate.toLocaleDateString(); //获取当前日期    
  13. var mytime=myDate.toLocaleTimeString(); //获取当前时间    
  14. myDate.toLocaleString( ); //获取日期与时间    
  15.     
  16. ==========================================================================    
  17.     
  18. JS获取当前时间戳的方法-JavaScript 获取当前毫秒时间戳有以下三种方法:    
  19.     
  20. var timestamp =Date.parse(new Date());    结果:1280977330000       //不推荐; 毫秒改成了000显示    
  21.     
  22. var timestamp =(new Date()).valueOf();       结果:1280977330748       //推荐;     
  23.     
  24. var timestamp=new Date().getTime();         结果:1280977330748        //推荐;     
  25.     
  26.      
  27.     
  28. js中单独调用new Date();  显示这种格式  Mar 31 10:10:43 UTC+0800 2012
  29.  
  30. Math.round(new Date().getTime()/1000)
    //getTime()返回数值的单位是毫秒
  31.     
  32. 但是用new Date() 参与计算会自动转换为从1970.1.1开始的毫秒数    
  33.     
  34. --------------------------------------------------------------------------------------------------    
  35.     
  36. 将字符串形式的日期转换成日期对象    
  37.     
  38. var strTime="2011-04-16";    //字符串日期格式               
  39. var date= new Date(Date.parse(strTime.replace(/-/g,  "/")));      //转换成Data();    
  40.     
  41. --------------------------------------------------------------------------------------------------    
  42.     
  43. new Date() ;     //参数可以为整数; 也可以为字符串; 但格式必须正确    
  44.     
  45. new Date(2009,1,1);       //正确    
  46.     
  47. new Date("2009/1/1");    //正确    
  48.     
  49. new Date("2009-1-1");    //错误    
  50.     
  51. new Date( year, month, date, hrs, min, sec)  按给定的参数创建一日期对象    
  52.   参数说明:    
  53.   year的值为:需设定的年份-1900。例如需设定的年份是1997则year的值应为97,即1997-1900的结果。所以Date中可设定的年份最小为1900;    
  54.   month的值域为0~11,0代表1月,11表代表12月;    
  55.   date的值域在1~31之间;    
  56.   hrs的值域在0~23之间。从午夜到次日凌晨1点间hrs=0,从中午到下午1点间hrs=12;    
  57.   min和sec的值域在0~59之间。    
  58.   例 Date day=new Date(11,3,4);    
  59.   //day中的时间为:04-Apr-11 12:00:00 AM    
  60.     
  61.     
  62.        另外,还可以给出不正确的参数。    
  63.   例 设定时间为1910年2月30日,它将被解释成3月2日。    
  64.   Date day=new Date(10,1,30,10,12,34);    
  65.   System.out.println("Day's date is:"+day);    
  66.   //打印结果为:Day's date is:Web Mar 02 10:13:34 GMT+08:00 1910   

 

有时候做项目会用到js的date日期格式,因为Date()返回的格式不是我们需要的,

Date()返回格式:

Thu Mar 19 2015 12:00:00 GMT+0800 (中国标准时间)

 

而我们则需要这样的格式:

2015-3-19 12:00:00

 

除非是在后台处理好时间格式,然后在页面直接显示。

 

那如何用js格式化date日期值呢?

1.日期格式转为日期标准字符串:2015-03-19

JavaScript Code复制内容到剪贴板
  1. var formatDate = function (date) {    
  2.     var y = date.getFullYear();    
  3.     var m = date.getMonth() + 1;    
  4.     m = m < 10 ? '0' + m : m;    
  5.     var d = date.getDate();    
  6.     d = d < 10 ? ('0' + d) : d;    
  7.     return y + '-' + m + '-' + d;    
  8. };    

 

2.js方法返回值:2015-03-19 12:00:00

JavaScript Code复制内容到剪贴板
  1. var formatDateTime = function (date) {    
  2.                 var y = date.getFullYear();    
  3.                 var m = date.getMonth() + 1;    
  4.                 m = m < 10 ? ('0' + m) : m;    
  5.                 var d = date.getDate();    
  6.                 d = d < 10 ? ('0' + d) : d;    
  7.                 var h = date.getHours();    
  8.                 h=h < 10 ? ('0' + h) : h;    
  9.                 var minute = date.getMinutes();    
  10.                 minute = minute < 10 ? ('0' + minute) : minute;    
  11.                 var second=date.getSeconds();    
  12.                 second=second < 10 ? ('0' + second) : second;    
  13.                 return y + '-' + m + '-' + d+' '+h+':'+minute+':'+second;    
  14.             };    

调用:formatDate(Date())   formatDate(Date())

 

3.时间戳转为日期格式

JavaScript Code复制内容到剪贴板
  1. //时间戳转日期格式    
  2.       var formatDateTime3 = function(time, format){    
  3.           var t = new Date(time);    
  4.           var tf = function(i){return (i < 10 ? '0' : '') + i};    
  5.           return format.replace(/yyyy|MM|dd|HH|mm|ss/g, function(a){    
  6.               switch(a){    
  7.                   case 'yyyy':    
  8.                       return tf(t.getFullYear());    
  9.                       break;    
  10.                   case 'MM':    
  11.                       return tf(t.getMonth() + 1);    
  12.                       break;    
  13.                   case 'mm':    
  14.                       return tf(t.getMinutes());    
  15.                       break;    
  16.                   case 'dd':    
  17.                       return tf(t.getDate());    
  18.                       break;    
  19.                   case 'HH':    
  20.                       return tf(t.getHours());    
  21.                       break;    
  22.                   case 'ss':    
  23.                       return tf(t.getSeconds());    
  24.                       break;    
  25.               }    
  26.           })    
  27.       };    

 

4.时间格式字符串转为时间戳(毫秒)

JavaScript Code复制内容到剪贴板
  1. var time1=‘2016-01-01 17:22:37’;    
  2. var date=new Date(time1.replace(/-/g, '/'));  //开始时间    
  3. var time2=date.getTime();   

 

如何将2015-03-12 12:00 转换成标准时间()?

Thu Mar 19 2015 12:00:00 GMT+0800 (中国标准时间)

 

js方法返回值:Thu Mar 19 2015 12:00:00 GMT+0800 (中国标准时间)

JavaScript Code复制内容到剪贴板
  1. var parserDate = function (date) {    
  2.     var t = Date.parse(date);    
  3.     if (!isNaN(t)) {    
  4.         return new Date(Date.parse(date.replace(/-/g, "/")));    
  5.     } else {    
  6.         return new Date();    
  7.     }    
  8. };    

调用:parserDate("2015-03-19 12::00:00")

5.判断时间间隔不超过24个小时

 

JS中字符转日期

var remindTime = "2008-04-02 10:08:44"; 

直接new Date(remindTime ) 即可。

 

var date1=new Date("2004/09/16 20:08:00");
var date2=new Date("2004/09/17 20:08:00");
var date3=(date2.getTime()-date1.getTime())/1000;   //相差秒数

JavaScript Code复制内容到剪贴板
  1. String tt="2015-11-25 18:18:18 - 2015-11-26 12:09:27";      
  2. String start=tt.substring(0,19);      
  3. String end=tt.substring(22,tt.length());      
  4.     
  5.  var startTime=$("#searchDateRange").val().substring(0,19).replace(/-/g, '/');    
  6.         var endTime=$("#searchDateRange").val().substring(22,41).replace(/-/g, '/');    
  7.         var date1=new Date(startTime);  //开始时间    
  8.         var date2=new Date(endTime);    //结束时间    
  9.     
  10.         var date3=date2.getTime()-date1.getTime()  //时间差的毫秒数    
  11.         if(date3>60*60*24*1000){    
  12.           alert("开始时间与结束时间间隔大于24小时!");    
  13.           return false;    
  14.         }    

 

JavaScript Code复制内容到剪贴板
  1. getStatusByPublishAudit(startTime,endTime){  
  2.     // 已发布状态下,根据开始时间和结束时间判断结果  
  3.     let currentTime = Math.round(new Date().getTime()/1000);  
  4.     let txt = "";  
  5.     startTime = this.getTimeStamp(startTime);  
  6.           endTime = this.getTimeStamp(endTime);  
  7.               
  8.     if(startTime > currentTime){  
  9.         txt = "已发布未开始"  
  10.     }else if(endTime < currentTime){  
  11.         txt = "已结束"  
  12.     }else{  
  13.         txt = "已发布进行中"  
  14.     };  
  15.     return txt;  
  16. }  

 

JavaScript Code复制内容到剪贴板
  1. if( (startTime < currentTime) && (endTime > currentTime) ){  
  2.      // 进行中单独判断  
  3. }  

 

本文来自于:http://www.yoyo88.cn/note/frontend/195.html

Powered by yoyo苏ICP备15045725号