<html> <head> <meta charset="UTF8" /> </head> <body> <script type="text/javascript"> /* 年(y)可以用 1-4 个占位符 月(M)、日(d)、时(H,24时)、时(h,12时)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符 毫秒(S)只能用 1 个占位符(是 1-3 位数字) AM或PM只能用 1 个占位符(是 2 位英文) 上午或下午(T)只能用 1 个占位符(是 2 位中文) 星期(E)可以用 1-3 个占位符 季度(q)只能用 1 个占位符(是 1 位数字) */ Date.prototype.format = function(fmt) { var map = { "M+" : this.getMonth() + 1, //月 "d+" : this.getDate(), //日 "H+" : this.getHours(), //24时 /* 上午12时只代表当天上午的12时,下午的12时代表当天下午的12时, 0时代表第二天的开始,即前面一天12时已过0时开始计算新一天的时间, 虽然说时间上跟前面那一天下午12时重合,但日期已经发生更改,所以不能说0时就是12时 */ "h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12,//12时 "m+" : this.getMinutes(), //分 "s+" : this.getSeconds(), //秒 "S" : this.getMilliseconds(), //毫秒 "t" : this.getHours() < 12 ? "AM" : "PM", "T" : this.getHours() < 12 ? "上午" : "下午", }; var week = { "0" : "日", "1" : "一", "2" : "二", "3" : "三", "4" : "四", "5" : "五", "6" : "六", } var quarter = { "0" : "一", "1" : "二", "2" : "三", "3" : "四", } if(/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); } if(/(E+)/.test(fmt)) { var weekPreStr; switch(RegExp.$1.length) { case 1: weekPreStr = ""; break; case 2: weekPreStr = "周"; break; default: weekPreStr = "星期"; break; } fmt = fmt.replace(RegExp.$1, weekPreStr + week[this.getDay()]); } if(/(q)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, quarter[Math.floor(this.getMonth() / 3)]); } for(var key in map) { if(new RegExp("(" + key + ")").test(fmt)) { fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? map[key] : ("00" + map[key]).substr((map[key]+"").length)); } } return fmt; } function write(str) { document.write(str + "<br/>"); } var date = new Date(); write(date.toString()); write(date.toUTCString()); write(date.toLocaleString()); write(""); write(date.format("yy-M-d t h:m:s.S")); write(date.format("yyyy-MM-dd hh:mm:ss.S")); write(date.format("yyyy-MM-dd E HH:mm:ss")); write(date.format("yyyy-MM-dd EE hh:mm:ss")); write(date.format("yyyy-MM-dd EEE hh:mm:ss")); write(date.format("yyyy年MM月dd日 EEE hh:mm:ss 第q季度")); </script> </body> </html>
对Date设置超出范围的参数
即使设置了超出范围的参数也不会报错,只会计算“最大合法值”与“超出值”相加得到的date。
<html> <body> <script type="text/javascript"> var date = new Date(); date.setFullYear(2016,12,32, 0, 0, 0); document.write(date); </script> </body> </html>
增减Date