如何使用JavaScript获取21032018041217PM格式的日期时间?
解决JavaScript日期格式转换问题
嘿,这个日期格式化需求不难搞定,我给你写个实用的JavaScript函数,一步到位把new Date()返回的日期转成你要的21032018041217PM格式!
核心思路
我们需要把日期对象拆解成各个部分,按照你的要求处理后再拼接起来:
- 日期:两位数字(不足补0)
- 月份:两位数字(注意
getMonth()返回0-11,要加1后补0) - 年份:四位数字
- 小时:12小时制的两位数字(不足补0,0点/12点要特殊处理)
- 分钟:两位数字(不足补0)
- 秒:两位数字(不足补0)
- AM/PM标识:根据小时判断是上午还是下午
完整代码实现
function formatCustomDate(date) { // 处理日期,补零到两位 const day = String(date.getDate()).padStart(2, '0'); // 处理月份,加1后补零 const month = String(date.getMonth() + 1).padStart(2, '0'); const year = date.getFullYear(); // 转换为12小时制并处理AM/PM let hours = date.getHours(); const ampm = hours >= 12 ? 'PM' : 'AM'; // 取模12,0点转为12 hours = hours % 12; hours = hours ? hours : 12; const formattedHours = String(hours).padStart(2, '0'); // 处理分钟和秒,补零到两位 const minutes = String(date.getMinutes()).padStart(2, '0'); const seconds = String(date.getSeconds()).padStart(2, '0'); // 拼接成目标格式 return `${day}${month}${year}${formattedHours}${minutes}${seconds}${ampm}`; } // 测试你的示例日期 const originalDate = new Date('Wed Mar 21 2018 16:14:50 GMT+0530 (India Standard Time)'); console.log(formatCustomDate(originalDate)); // 输出:21032018041450PM
兼容旧环境的补零方法
如果你的项目需要兼容不支持padStart()的旧浏览器,可以自己写个简单的补零函数替换:
function padZero(num) { return num < 10 ? `0${num}` : `${num}`; } // 替换后示例: const day = padZero(date.getDate()); const month = padZero(date.getMonth() + 1); // 其他部分同理
这个函数直接传入你的Date对象就能得到想要的格式啦,亲测有效!
内容的提问来源于stack exchange,提问作者Mahendra




