1 /** 2 * @author 陈维斌 http://www.cnblogs.com/Orange-C/p/4042242.html%20
3 * 如果想将日期字符串格式化,需先将其转换为日期类型Date 4 * 以下是提供几种常用的 5 * 6 * var da = new Date().format('yyyy-MM-dd hh:mm:ss'); //将日期格式串,转换成先要的格式 7 * alert("格式化日期类型 \n" + new Date() + "\n 为字符串:" + da); 8 * 9 * var str = "2014/01/01 01:01:01" // yyyy/mm/dd这种格式转化成日期对像可以用new Date(str);在转换成指定格式 10 * alert("格式化字符串\n" + str + " 为日期格式 \n" + new Date(str).format('yyyy-MM-dd hh:mm:ss')) 11 * 12 * 13 * var str1 = "2014-12-31 00:55:55" // yyyy-mm-dd这种格式的字符串转化成日期对象可以用new Date(Date.parse(str.replace(/-/g,"/"))); 14 * alert("格式化字符串\n" + str1 + " 为日期格式 \n" + new Date(Date.parse(str1.replace(/-/g, "/"))).format('yyyy-MM-dd hh:mm:ss')) 15 * 16 * 17 * 日期加月 18 * 先将字符转换成Date类型才可以使用 19 * var str1 = "2014-12-31 00:55:55" // yyyy-mm-dd这种格式的字符串转化成日期对象可以用new Date(Date.parse(str.replace(/-/g,"/"))); 20 * 例如 var saveDate = new Date(Date.parse(str1.replace(/-/g, "/"))).addMonth(5) 21 * addMonth(月数) 必须为整数 22 */ 23 24 Date.prototype.format = function (format) { 25 var date = { 26 "M+": this.getMonth() + 1, 27 "d+": this.getDate(), 28 "h+": this.getHours(), 29 "m+": this.getMinutes(), 30 "s+": this.getSeconds(), 31 "q+": Math.floor((this.getMonth() + 3) / 3), 32 "S+": this.getMilliseconds() 33 }; 34 if (/(y+)/i.test(format)) { 35 format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length)); 36 } 37 for (var k in date) { 38 if (new RegExp("(" + k + ")").test(format)) { 39 format = format.replace(RegExp.$1, RegExp.$1.length == 1 40 ? date[k] : ("00" + date[k]).substr(("" + date[k]).length)); 41 } 42 } 43 return format; 44 } 45 Date.daysInMonth = function (year, month) { 46 if (month == 1) { 47 if (year % 4 == 0 && year % 100 != 0) 48 return 29; 49 else 50 return 28; 51 } else if ((month <= 6 && month % 2 == 0) || (month = 6 && month % 2 == 1)) 52 return 31; 53 else 54 return 30; 55 }; 56 Date.prototype.addMonth = function (addMonth) { 57 var y = this.getFullYear(); 58 var m = this.getMonth(); 59 var nextY = y; 60 var nextM = m; 61 //如果当前月+要加上的月>11 这里之所以用11是因为 js的月份从0开始 62 if (m > 11) { 63 nextY = y + 1; 64 nextM = parseInt(m + addMonth) - 11; 65 } else { 66 nextM = this.getMonth() + addMonth 67 } 68 var daysInNextMonth = Date.daysInMonth(nextY, nextM); 69 var day = this.getDate(); 70 if (day > daysInNextMonth) { 71 day = daysInNextMonth; 72 } 73 return new Date(nextY, nextM, day); 74 };