如何使用JavaScript将'yyyy-mm-dd hh:mm:ss'格式日期时间转为时间戳?
在JavaScript中将日期时间字符串转换为时间戳的方法
当然可以!JavaScript完全能搞定这个需求,而且有好几种实用的方法,我来一步步给你说明:
方法1:使用Date对象的getTime()方法
这是最常用的方式,先把日期字符串转换成Date实例,再调用getTime()获取毫秒级时间戳。不过要注意,有些旧浏览器对带空格的日期格式(比如2015-05-01 05:13:43)支持不太好,建议把空格换成T,转换成标准的ISO 8601格式:
const dateStr = '2015-05-01 05:13:43'; // 替换空格为T,提升兼容性 const formattedDateStr = dateStr.replace(' ', 'T'); const date = new Date(formattedDateStr); const timestamp = date.getTime(); console.log(timestamp); // 输出对应的毫秒级时间戳
方法2:直接用Date.parse()
Date.parse()可以直接解析日期字符串并返回毫秒级时间戳,用法更简洁:
const dateStr = '2015-05-01 05:13:43'; const timestamp = Date.parse(dateStr.replace(' ', 'T')); console.log(timestamp);
⚠️ 小提醒:如果日期格式不合法,Date.parse()会返回NaN,所以最好加个校验:
const dateStr = '2015-05-01 05:13:43'; const timestamp = Date.parse(dateStr.replace(' ', 'T')); if (!isNaN(timestamp)) { console.log('转换成功:', timestamp); } else { console.log('日期格式无效,请检查输入内容'); }
方法3:获取秒级时间戳
如果你的需求是秒级时间戳(比如后端常用的格式),只需要把毫秒结果除以1000后取整即可:
const dateStr = '2015-05-01 05:13:43'; const date = new Date(dateStr.replace(' ', 'T')); const secondTimestamp = Math.floor(date.getTime() / 1000); console.log(secondTimestamp); // 输出秒级时间戳
额外注意事项
- 时区问题:默认情况下,
Date会根据本地时区解析日期。如果需要基于UTC时区转换,只需在日期字符串末尾加上Z,比如2015-05-01T05:13:43Z,这样得到的就是UTC时间对应的时间戳。 - 旧浏览器兼容(比如IE8):如果需要兼容非常老旧的浏览器,ISO格式可能不被支持,这时候可以手动拆分日期字符串,再构造
Date对象(注意月份是从0开始的):
const dateStr = '2015-05-01 05:13:43'; // 拆分日期和时间部分 const [datePart, timePart] = dateStr.split(' '); // 拆分年月日、时分秒 const [year, month, day] = datePart.split('-').map(Number); const [hour, minute, second] = timePart.split(':').map(Number); // 构造Date对象,月份要减1 const date = new Date(year, month - 1, day, hour, minute, second); const timestamp = date.getTime(); console.log(timestamp);
内容的提问来源于stack exchange,提问作者Nitin




