最详细的解题思路和代码 每一步都做了注释。 个人建议在解题的时候,现在本地的代码编辑器中写一遍,等结果调试成功了再粘贴到网页中进行提交。
function formatDate(newDate, format) {
//定义函数 作用为在个位数前面加0
function add_0(num) {
if (num < 10) {
return "0" + num;
} else {
return num;
}
}
//处理周 (跟 newDate.getDay() 配合)
let week = ["日", "一", "二", "三", "四", "五", "六"]
//定义一个对象 存放对传入日期处理之后的数据
const formatObj = {
yyyy: newDate.getFullYear(), //年
yy: newDate.getFullYear() % 100,
MM: add_0(newDate.getMonth() + 1), //月 因为一月等于0
M: newDate.getMonth() + 1,
dd: add_0(newDate.getDate()), //日
d: newDate.getDate(),
HH: add_0(newDate.getHours()), //时 24小时制
H: newDate.getHours(),
hh: add_0(newDate.getHours() % 12), //时 12小时制
h: newDate.getHours() % 12,
mm: add_0(newDate.getMinutes()), //分
m: newDate.getMinutes(),
ss: add_0(newDate.getSeconds()), //秒
s: newDate.getSeconds(),
w: week[newDate.getDay()], //周 newDate.getDay():只能拿到数字
}
//将处理好的数据 去替换传入的格式
for (var k in formatObj) {
// console.log(k); //yyyy yy mm m dd d HH H MM M SS S w
//对传入的格式进行处理
//console.log(format.replace("yyyy", '21')); //21-mm-dd HH:MM:ss 星期w
format = format.replace(k, formatObj[k]) //k:对象中的属性 刚好对应格式中的名字 formatObj[k]:拿到属性值(将前面的进行替换)
}
return format;
} a = formatDate(new Date(1409894060000), "yy-M-d hh:m:s 星期w"); //2014-09-05 13:14:20 星期五 console.log(a);