我们看控制台打印的关于Date这个类
我们这里可以看到内置方法没有类似format这种方法,所以需要自己定义。
内置的方法:
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)
myDate.getMinutes(); //获取当前分钟数(0-59)
myDate.getSeconds(); //获取当前秒数(0-59)
myDate.getMilliseconds(); //获取当前毫秒数(0-999)
myDate.toLocaleDateString(); //获取当前日期
var mytime=myDate.toLocaleTimeString(); //获取当前时间
myDate.toLocaleString( ); //获取日期与时间
利用这个内置的方法然后,拼成格式化的方法
看下这个博客:http://www.cnblogs.com/zhangpengshou/archive/2012/07/19/2599053.html
http://www.cnblogs.com/qinpengming/archive/2012/12/03/2800002.html
推荐的一个简单的方法:
// 对Date的扩展,将 Date 转化为指定格式的String // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) // 例子: // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 // (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 Date.prototype.Format = function (fmt) { //author: meizz 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 time1 = new Date().Format("yyyy-MM-dd"); var time2 = new Date().Format("yyyy-MM-dd HH:mm:ss"); //这里边没有星期的,简单的使用
new Date().Format("yyyy/MM/dd hh:mm:ss")//这样子也行
更容易记忆些:
//时间的格式化 Date.prototype.format = function(fmt){ var o = { 'M+':new Date().getMonth()+1, 'd+':new Date().getDate(), 'h+':new Date().getHours(), 'm+':new Date().getMinutes(), 's+':new Date().getSeconds() } 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,o[k]<10?("0"+o[k]):o[k] ); } } return fmt; } console.log(new Date().format('yy-MM-dd hh-mm-ss'));
计算时间差: