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

PHP使用DateTime::createFromFormat转时间戳提示Incorrect date string怎么解决

问题排查与解决方案

报错原因

你的代码解析失败的核心原因是 DateTime::createFromFormat 传入的格式模板与实际输入的日期字符串结构完全不匹配:

  • 你指定的模板 d-m-Y H:i:s 对应「日-月-年 时:分:秒」的结构,仅能匹配 15-07-2021 19:00:00 这类格式的字符串
  • 你实际输入的 2021-07-15T19:00:00.000Z 是带毫秒、UTC标识的标准ISO 8601格式,和模板规则完全不符,因此返回false触发报错。

修复方案

方案1:使用匹配的格式模板

你可以选择手写匹配的模板,注意需要转义字符串里的固定字符T和Z,用u匹配毫秒位:

$d = DateTime::createFromFormat('Y-m-d\TH:i:s.u\Z', '2021-07-15T19:00:00.000Z');
if ($d === false) {
    die("Incorrect date string");
} else {
    echo $d->getTimestamp();
}

也可以直接使用PHP内置的DATE_RFC3339_EXTENDED常量代替手写模板,避免格式写错:

$d = DateTime::createFromFormat(DATE_RFC3339_EXTENDED, '2021-07-15T19:00:00.000Z');

方案2:直接自动解析标准格式

PHP的DateTime类原生支持解析标准ISO 8601格式的字符串,不需要手动指定格式,写法更简洁:

$d = new DateTime('2021-07-15T19:00:00.000Z');
echo $d->getTimestamp();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 04:21:03