一、基础转换方法
当前时间戳
const timestamp = new Date().getTime(); // 毫秒级(13位) const seconds = Math.floor(Date.now() / 1000); // 秒级(10位)
指定日期转时间戳
// 方式1:日期字符串 const dateStr = "2025-02-20 12:00:00"; const timestamp1 = new Date(dateStr).getTime(); // 方式2:分段参数(年月日时分秒) const timestamp2 = new Date(2025, 1, 20, 0, 0, 0).getTime();
二、注意事项
时区问题
new Date("2025-02-20") 会解析为 UTC时区(可能比北京时间少8小时),建议用以下格式:
new Date("2025/02/20"); // 斜杠格式解析为本地时区
兼容性问题
部分安卓设备可能不支持 YYYY-MM-DD 格式,建议统一使用 YYYY/MM/DD 格式。
无效日期处理
添加校验逻辑避免崩溃:
const date = new Date("无效日期");
if (isNaN(date.getTime())) {
console.log("日期格式错误");
}
三、完整工具函数示例
function dateToTimestamp(dateStr) {
// 统一替换中划线为斜杠(解决时区问题)
const formattedDate = dateStr.replace(/-/g, '/');
const date = new Date(formattedDate);
if (isNaN(date.getTime())) {
throw new Error("日期格式错误,请使用 YYYY-MM-DD HH:mm:ss");
}
return date.getTime();
}
// 使用示例
console.log(dateToTimestamp("2025-02-20 08:00:00")); // 输出毫秒级时间戳
四、结果验证
输入 2025-02-20 00:00:00(北京时间)会得到:
1739980800000(对应 UTC 时间 2025-02-19T16:00:00Z)
换算为秒级:1739980800
五、扩展场景
若需要 UTC 时间戳,可直接使用:
Date.UTC(2025, 1, 20); // 月份从0开始(1=2月)