如何在不使用moment.js的情况下格式化JavaScript日期并去除秒数
自定义JavaScript Date格式转换(去掉秒数、12小时制)
完全不用依赖Moment.js,我们可以手动提取Date对象的各个时间部分,处理补零和12小时制转换,轻松得到你想要的mm/dd/yy hh:mm AM/PM格式。
核心实现函数
function formatToCustomDate(date) { // 处理月份:JS月份是0-11,所以要+1,补零到两位 const month = String(date.getMonth() + 1).padStart(2, '0'); // 处理日期,补零到两位 const day = String(date.getDate()).padStart(2, '0'); // 取年份后两位 const year = String(date.getFullYear()).slice(-2); // 处理12小时制的小时和时段(AM/PM) let hours = date.getHours(); const period = hours >= 12 ? 'PM' : 'AM'; // 把24小时制转成12小时制,0点(24)要转为12 hours = hours % 12 || 12; hours = String(hours).padStart(2, '0'); // 处理分钟,补零到两位 const minutes = String(date.getMinutes()).padStart(2, '0'); // 拼接成目标格式 return `${month}/${day}/${year} ${hours}:${minutes} ${period}`; } // 测试用例 const testDate = new Date('1913-12-07T13:31:52'); console.log(formatToCustomDate(testDate)); // 输出:12/07/13 01:31 PM
关键细节说明
- 补零处理:用
padStart(2, '0')确保月份、日期、小时、分钟都是两位数字,避免出现12/7/13这种格式,统一成12/07/13 - 12小时制转换:通过
hours % 12把24小时制转为12小时制,同时用|| 12处理0点(24小时制的0),让它显示为12 - 年份截取:用
slice(-2)直接获取年份的最后两位,比如1913变成13
这个函数复用性很高,你可以直接传入任意Date对象,就能得到符合要求的格式啦。
内容的提问来源于stack exchange,提问作者early_ninja
相关产品推荐
相关产品推荐

