思路:使用一个对象表示标准格式与对象内容的对应,注意,其中同系列长的要在前面,因为要从前向后遍历,同时位数对齐也需要单独处理,最后遍历对象并使用replace方法依次替换即可。
function formatDate(date, format) { let addZero = function (data) { if (data < 10) { return '0' + data } return data } let obj = { 'yyyy': date.getFullYear(), 'yy': date.getFullYear() % 100, 'MM': addZero(date.getMonth() + 1), 'M': date.getMonth() + 1, 'dd': addZero(date.getDate()), 'd': date.getDate(), 'HH': addZero(date.getHours()), 'H': date.getHours(), 'hh': addZero(date.getHours() % 12), 'h': date.getHours() % 12, 'mm': addZero(date.getMinutes()), 'm': date.getMinutes(), 'ss': addZero(date.getSeconds()), 's': date.getSeconds(), 'w': function () { arr = ['日', '一', '二', '三', '四', '五', '六'] return arr[date.getDay()] }() } for (let i in obj) { format = format.replace(i, obj[i]) } return format }
总结:getFullYear获取年份,getMonth获取月份(实际月份需要加一),getDate获取日期,getHours获取小时,getMinutes获取分钟,getSeconds获取秒数,getDay获取星期。