小程序将日期转为时间戳

微信   2025-02-20 21:01   91   0  

一、基础转换方法

‌当前时间戳‌

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月)


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。