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

PHP中如何将Unix时间戳转换为UTC日期时间?(非面向对象实现)

从Unix时间戳转UTC日期(非面向对象PHP实现)

已知UTC日期2022-12-11对应的起始Unix时间戳为1670716800,可通过以下代码实现UTC日期到时间戳的转换:

$Date = "2022-12-11";
echo strtotime($Date . " 00:00 UTC"); 

输出结果为1670716800,符合预期。

若需要反向转换——将Unix时间戳转为UTC时区的日期时间,而getdate(1670716800)返回的是本地时区结果,且要求尽可能避免使用面向对象PHP实现,可采用以下几种方法:

方法1:使用gmdate()(最推荐)

gmdate()函数原生基于UTC时区处理日期格式化,无需额外配置,直接调用即可:

$timestamp = 1670716800;
// 输出UTC日期:2022-12-11
echo gmdate('Y-m-d', $timestamp);
// 若需完整UTC时间(含时分秒)
echo gmdate('Y-m-d H:i:s', $timestamp);

方法2:临时切换时区后使用date()

如果习惯使用date()函数,可临时将PHP默认时区设为UTC,转换完成后再还原原时区:

$timestamp = 1670716800;
// 保存当前时区
$originalTimezone = date_default_timezone_get();
// 切换到UTC时区
date_default_timezone_set('UTC');
// 输出UTC日期:2022-12-11
echo date('Y-m-d', $timestamp);
// 还原原时区,避免影响后续代码
date_default_timezone_set($originalTimezone);

若需使用getdate()的处理方式

getdate()默认依赖本地时区,若必须使用该函数,可通过临时切换时区实现:

$timestamp = 1670716800;
$originalTimezone = date_default_timezone_get();
date_default_timezone_set('UTC');
$utcDateInfo = getdate($timestamp);
date_default_timezone_set($originalTimezone);
// 格式化输出UTC日期:2022-12-11
echo sprintf('%d-%02d-%02d', $utcDateInfo['year'], $utcDateInfo['mon'], $utcDateInfo['mday']);

此方法相对繁琐,优先推荐gmdate()方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:45:39