js 时间格式化,兼容IE8和safari浏览器。
function formatDate(date, fmt, near, type) { var dateStr = date; if (!dateStr || !fmt) { return; } if (near && typeof date == 'string') { if (!(dateStr - 0)) return; if (!type || type == 'date') { dateStr = dateStr.substr(0, 4) + '/' + dateStr.substr(4, 2) + '/' + dateStr.substr(6, 2); } else if (type == 'month') { dateStr = dateStr.substr(0, 4) + '/' + dateStr.substr(4, 2) + '/01'; // 兼容safari } } if (typeof dateStr == 'string') { dateStr = dateStr.replace(/-/g, "/"); // 兼容safari } var tempDate = new Date(dateStr); if (tempDate == 'Invalid Date') return; var o = { "M+": tempDate.getMonth() + 1, //月份 "d+": tempDate.getDate(), //日 "h+": tempDate.getHours(), //小时 "m+": tempDate.getMinutes(), //分 "s+": tempDate.getSeconds(), //秒 "q+": Math.floor((tempDate.getMonth() + 3) / 3), //季度 "S": tempDate.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (tempDate.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; } console.log(formatDate(new Date(), 'yyyy年MM月dd日')); // 2017年05月05日 console.log(formatDate('20180220', 'MM/dd', true)); // 02/20
也可以采用 Date.prototype.formatDate = function(date, fmt, near, type) {}这种扩展原型的方式,显得更优雅些。