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

DateTime与Timestamp值不一致求助:如何获取每日21:00的Timestamp

问题原因及解决方案

你的问题核心是时区不匹配:

  • DateTime::createFromFormat('G:i', '21:00') 创建对象时未指定时区,默认使用PHP全局时区(通常为UTC),因此该对象内部记录的是UTC时间2022-08-24 21:00:00。
  • 调用getTimestamp()得到的是UTC时间对应的Unix时间戳(1661374800),而你的目标时区Europe/Paris在夏令时期间为UTC+2,这个时间戳转换为巴黎时区时间就是23:00,和你看到的结果一致。
  • strtotime('21:00')同样依赖PHP全局时区生成时间戳,传给wp_date也无法修正时区偏差。

要获取巴黎时区每日21:00对应的时间戳,只需在创建DateTime对象时指定目标时区即可:

$timezone = wp_timezone();
// 创建带指定时区的DateTime对象
$start = DateTime::createFromFormat('G:i', '21:00', $timezone);
$startTimestamp = $start->getTimestamp(); // 这就是巴黎时区21:00对应的时间戳

也可以用WordPress的wp_date实现更简洁的写法:

$timezone = wp_timezone();
// 获取当前日期21:00对应的时间戳(巴黎时区)
$startTimestamp = wp_date('U', strtotime(date('Y-m-d') . ' 21:00'), $timezone);

验证说明:生成的时间戳转换为巴黎时区是当日21:00,转换为UTC则是当日19:00(夏令时UTC+2),这正是你需要的结果。

内容的提问来源于stack exchange,提问作者Sébastien Serre

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:27:35