Date型转换
1:Date对象转换成字符串
1 // 对Date的扩展,将 Date 转化为指定格式的String 2 // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, 3 // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 4 // 例子: 5 // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 6 // (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 7 Date.prototype.Format = function (fmt) { 8 var o = { 9 "M+": this.getMonth() + 1, //月份 10 "d+": this.getDate(), //日 11 "h+": this.getHours(), //小时 12 "m+": this.getMinutes(), //分 13 "s+": this.getSeconds(), //秒 14 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 15 "S": this.getMilliseconds() //毫秒 16 }; 17 if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 18 for (var k in o) 19 if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); 20 return fmt; 21 } 22 23 var date1 = new Date().Format("yyyy-MM-dd"); 24 var date2 = new Date().Format("yyyy-MM-dd hh:mm:ss");
2:字符串转换成Date对象
1 //2.1方法一:输入的时间格式为yyyy-MM-dd 2 function convertDateFromString1(dateString) { 3 if (dateString) { 4 var date = new Date(dateString.replace(/-/,"/")) 5 return date; 6 } 7 } 8 9 //2.2方法二:输入的时间格式为yyyy-MM-dd hh:mm:ss 10 function convertDateFromString2(dateString) { 11 if (dateString) { 12 var arr = dateString.replace(/ /g,"-").replace(/:/g,"-").split("-"); 13 // 年月日时分秒 14 var date = new Date(arr[0], arr[1]-1, arr[2], arr[3], arr[4], arr[5]); 15 return date; 16 } 17 }
3:Date对象转换成时间戳
1 var newDate = new Date(); 2 console.log(Number(newDate));
4:将时间戳对象转换成Date
1 var timestamp = 1523323795433; 2 var newDate = new Date(timestamp); 3 console.log(newDate);
5:new Date()的5种参数设定
1 // month:用英文 表示月份名称,从January到December 2 // mth: 用整数表示月份,从(1月)到11(12月) 3 // dd: 表示一个 月中的第几天,从1到31 4 // yyyy: 四位数表示的年份 5 // hh: 小时数,从0(午夜)到23(晚11点) 6 // mm: 分钟数,从0到59的整数 7 // ss: 秒数,从0到59的整数 8 // ms: 毫秒数,为大于等于0的整数 9 // 1)new Date("month dd,yyyy hh:mm:ss"); 10 new Date("January 12,2006 22:19:35"); 11 // 2)new Date("month dd,yyyy"); 12 new Date("January 12,2006"); 13 // 3)new Date(yyyy,mth,dd,hh,mm,ss); 14 new Date(2006,0,12,22,19,35); 15 // 4)new Date(yyyy,mth,dd); 16 new Date(2006,0,12); 17 // 5)new Date(ms); 18 new Date(1137075575000);
6:表示星期
1 // 6.1 方法一:直接判断 2 var myDate = new Date(); 3 var year = myDate.getFullYear(); //获取完整的年份(4位,1970-????) 4 var month = myDate.getMonth()+1; //获取当前月份(0-11,0代表1月) 5 var date = myDate.getDate(); //获取当前日(1-31) 6 var day = myDate.getDay(); //获取当前星期X(0-6,0代表星期天) 7 if(day==1){day="星期一";} 8 if(day==2){day="星期二";} 9 if(day==3){day="星期三";} 10 if(day==4){day="星期四";} 11 if(day==5){day="星期五";} 12 if(day==6){day="星期六";} 13 if(day==0){day="星期日";} 14 console.log(year + "-" + month + "-" + date + " " + day); 15 16 // 6.2 方法二:对Date扩展 17 // (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04 18 // (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04 19 // (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04 20 // (new Date()).pattern("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 21 Date.prototype.pattern=function(fmt) { 22 var o = { 23 "M+" : this.getMonth()+1, //月份 24 "d+" : this.getDate(), //日 25 "h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12, //小时 26 "H+" : this.getHours(), //小时 27 "m+" : this.getMinutes(), //分 28 "s+" : this.getSeconds(), //秒 29 "q+" : Math.floor((this.getMonth()+3)/3), //季度 30 "S" : this.getMilliseconds() //毫秒 31 }; 32 // 把unicode解码成字符,要用转义字符'\u' 33 var week = { 34 "0" : "\u65e5", 35 "1" : "\u4e00", 36 "2" : "\u4e8c", 37 "3" : "\u4e09", 38 "4" : "\u56db", 39 "5" : "\u4e94", 40 "6" : "\u516d" 41 }; 42 if(/(y+)/.test(fmt)){ 43 fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 44 } 45 if(/(E+)/.test(fmt)){ 46 fmt=fmt.replace(RegExp.$1, ((RegExp.$1.length>1) ? (RegExp.$1.length>2 ? "\u661f\u671f" : "\u5468") : "")+week[this.getDay()+""]); 47 } 48 for(var k in o){ 49 if(new RegExp("("+ k +")").test(fmt)){ 50 fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); 51 } 52 } 53 return fmt; 54 } 55 56 var date = new Date(); 57 console.log(date.pattern("yyyy-MM-dd EE hh:mm:ss"));
7:计算两个时间差
1 // 两个Date型日期直接相减,得出时间差(毫秒) 2 parseInt(endTime.getTime() - startTime.getTime()); 3 4 // *如果需要算秒、分、时,需要对应再计算。 5 var count = parseInt(inEndTime.getTime() - inStartTime.getTime()); 6 //相差天数 7 var days=Math.floor(count/(24*3600*1000)); 8 //计算天数后剩余的毫秒数 9 var leave1=count%(24*3600*1000); 10 //相差小时数 11 var hours=Math.floor(leave1/(3600*1000)); 12 //计算小时数后剩余的毫秒数 13 var leave2=leave1%(3600*1000); 14 //相差分钟数 15 var minutes=Math.floor(leave2/(60*1000)); 16 //计算分钟数后剩余的毫秒数 17 var leave3=leave2%(60*1000); 18 //相差秒数 19 var seconds=Math.round(leave3/1000); 20 21 var result = days+"d "+hours+"h "+minutes+"m "+seconds+" s";