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

如何使用JavaScript从PHP生成的秒级时间戳获取UTC日期?

搞定UTC日期提前一天的坑

嘿,这个问题我之前帮朋友排查过,核心原因其实很容易忽略:PHP生成的是秒级时间戳,但JavaScript的Date构造函数认的是毫秒级时间戳!你直接把PHP的秒戳丢进去,相当于把时间往回拨了1000倍,自然会得到不对的日期(你遇到的提前一天,大概率是你的时间戳刚好是当天凌晨的秒数,换算成毫秒后落在了前一天的UTC时段里)。

怎么修复?两步走:

  • 先把PHP传过来的秒级时间戳乘以1000,转成JS能识别的毫秒级时间戳
  • 再用你原来的逻辑去生成UTC格式化日期就ok了

完整的示例代码:

// 假设arrivalDate是PHP给的秒级时间戳,比如1609459200(对应2021-01-01 UTC)
var arrivalDate = 1609459200; 
var newdate = new Date(arrivalDate * 1000); // 重点就在这一步:乘1000转毫秒!
var tempdate = newdate.getUTCFullYear()+'-'+('0' + (newdate.getUTCMonth()+1)).slice(-2)+'-'+('0' + newdate.getUTCDate()).slice(-2);
console.log(tempdate); // 这下就能输出正确的UTC日期:2021-01-01

额外小技巧:

其实你可以用JS自带的方法简化日期格式化,不用自己拼字符串:

var tempdate = newdate.toISOString().split('T')[0];
// 同样会得到YYYY-MM-DD格式的UTC日期,代码简洁多了

要是你确认PHP的时间戳是基于本地时间而非UTC的,那可能还要额外调整,但一般PHP的time()函数返回的都是UTC的秒级时间戳,所以乘1000这一步基本就能解决问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:13:10