You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用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

火山引擎 最新活动