TypeScript实现分钟小于10时补前置0的时间格式化问题求助
问题修复:分钟补0不生效的问题
你的代码里补0的操作没有赋值给minutes变量,只是执行了"0" + minutes但没把结果存回去,所以原minutes变量还是原来的数字,自然不会显示带前导0的格式。
修复方案1:修改if语句,赋值回变量
把原来的if块改成这样,将拼接后的字符串赋值给minutes:
var formattedTime = new Date(time + 'z'); var hours = formattedTime.getHours(); var amOrPm = hours >= 12 ? 'PM' : 'AM'; hours = (hours % 12) || 12; var minutes = formattedTime.getMinutes(); if (minutes < 10) { // 把补0后的结果赋值回minutes变量 minutes = "0" + minutes; }; var finalTime = eventDate +" "+ hours + ":" + minutes + " " + amOrPm;
修复方案2:用padStart更简洁(推荐)
ES6的padStart方法可以直接给字符串补前导字符,一步到位,不用写if判断:
var formattedTime = new Date(time + 'z'); var hours = formattedTime.getHours(); var amOrPm = hours >= 12 ? 'PM' : 'AM'; hours = (hours % 12) || 12; // 把数字转成字符串,然后补0到总长度为2位 var minutes = formattedTime.getMinutes().toString().padStart(2, '0'); var finalTime = eventDate +" "+ hours + ":" + minutes + " " + amOrPm;
padStart(2, '0')的作用是:将当前字符串补到总长度为2,如果长度不够就在前面添加'0'。比如数字4转成字符串是"4",补完后变成"04";数字12转成字符串是"12",长度已经满足2位,就不会有变化。
内容的提问来源于stack exchange,提问作者Sarah Hamilton
相关产品推荐
相关产品推荐

