You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数据库存储的hour、minute时间值转换为epoch(Unix时间戳)

需求可以实现,你得到NaN的原因有两个:

  1. 原生JavaScript没有内置全局epoch()方法,直接调用不存在的方法自然返回非数值结果。
  2. Epoch时间戳的本质是从1970-01-01 00:00:00 UTC到目标时间的秒/毫秒差值,仅提供时分没有关联具体日期的话,无法确定唯一的时间点,自然无法计算对应时间戳。

正确实现方案

场景1:搭配当前本地日期计算时间戳

适用于需要取当天对应时分的时间戳的场景:

// 数据库存储的字符串格式时分
let hour = "20"
let minute = "55"

// 初始化日期为当前本地日期
const targetDate = new Date()
// 依次设置时、分、秒、毫秒,后两项设为0避免默认值带来误差
targetDate.setHours(parseInt(hour), parseInt(minute), 0, 0)

// 13位毫秒级Epoch时间戳
const timestampMs = targetDate.getTime()
// 如需10位秒级时间戳,做除法取整即可
const timestampS = Math.floor(timestampMs / 1000)

场景2:搭配指定日期计算时间戳

适用于需要绑定固定日期计算对应时分时间戳的场景:

let hour = "20"
let minute = "55"

// 初始化指定日期,注意月份从0开始计数,示例为2024年5月20日(5月对应参数为4)
const targetDate = new Date(2024, 4, 20)
targetDate.setHours(parseInt(hour), parseInt(minute), 0, 0)

const timestamp = targetDate.getTime()

补充说明

  • 如果需要基于UTC时区计算时间戳,将setHours替换为setUTCHours即可。
  • 前后端交互使用时间戳时,建议统一时区标准,避免时区差导致的时间偏移。

内容的提问来源于stack exchange,提问作者gianlps

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:36:03