如何将指定格式的JavaScript日期转换为YYYYMMDDHHMMSS格式
解决JavaScript日期转YYYYMMDDHHMMSS格式的方案
嘿,刚好做过类似的需求,给你一个简洁可靠的实现方法!我们需要把Mon Apr 16 2018 19:00:00 GMT-0500 (Central Daylight Time)这种标准JS Date对象(或日期字符串)转换成YYYYMMDDHHMMSS格式的字符串,核心思路就是提取每个时间维度的数值,补零后拼接成目标格式。
实现代码(ES6+版本)
function formatDateToYYYYMMDDHHMMSS(date) { // 先统一输入为Date对象,如果是字符串就先转换 const targetDate = typeof date === 'string' ? new Date(date) : date; const year = targetDate.getFullYear(); // 注意:JS月份是0-11,必须加1后再补零到2位 const month = String(targetDate.getMonth() + 1).padStart(2, '0'); const day = String(targetDate.getDate()).padStart(2, '0'); const hours = String(targetDate.getHours()).padStart(2, '0'); const minutes = String(targetDate.getMinutes()).padStart(2, '0'); const seconds = String(targetDate.getSeconds()).padStart(2, '0'); return `${year}${month}${day}${hours}${minutes}${seconds}`; } // 测试示例 const originalDateStr = 'Mon Apr 16 2018 19:00:00 GMT-0500 (Central Daylight Time)'; console.log(formatDateToYYYYMMDDHHMMSS(originalDateStr)); // 输出: 20180416190000
兼容性处理(ES6之前版本)
如果你的项目需要兼容不支持padStart的旧环境,可以自己实现一个简易补零函数:
function padZero(num) { return num < 10 ? '0' + num : num.toString(); } function formatDateToYYYYMMDDHHMMSS(date) { const targetDate = typeof date === 'string' ? new Date(date) : date; const year = targetDate.getFullYear(); const month = padZero(targetDate.getMonth() + 1); const day = padZero(targetDate.getDate()); const hours = padZero(targetDate.getHours()); const minutes = padZero(targetDate.getMinutes()); const seconds = padZero(targetDate.getSeconds()); return year + month + day + hours + minutes + seconds; }
关键注意点
- 月份坑点:JS的
getMonth()返回值是0到11,对应1月到12月,所以一定要加1才能得到实际的月份数字 - 补零必要性:确保日期、月份、小时等部分都是两位数字,避免出现
201841690000这种格式错误的结果 - 输入校验(可选):如果不确定输入是否为合法Date对象,可以在函数开头加校验:
if (!(targetDate instanceof Date) || isNaN(targetDate)) return '';,避免报错
内容的提问来源于stack exchange,提问作者Ajay Srikanth
相关产品推荐
相关产品推荐

