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

Symfony fixtures调用setDate方法提示需实现DateTimeInterface接口错误

错误原因
  • \DateTime::createFromFormat()方法在格式与待解析字符串不匹配时会返回布尔值false而非DateTime实例,你传入的格式串存在两处错误,导致解析失败返回了false,触发参数类型报错:
    1. 小时格式错误:你使用了小写hh,小写h为12小时制格式符,且无需重复书写,你传入的20点属于24小时制时间,应使用大写格式符H
    2. 分钟格式错误:你使用了mm作为分钟格式,m是月份对应的格式符,分钟的正确格式符为i
  • 代码存在变量名不统一问题:你实例化实体时赋值给$match1,后续调用方法、持久化时使用的是未定义的$m1,未修正的话也会触发额外报错。
修正代码
$match1 = new Matchs();
$match1->setDescription('Description ')
   ->setDate(\DateTime::createFromFormat('d-m-Y H:i', '25-12-2001 20:30'));
$manager->persist($match1);
优化建议

可以增加解析结果校验逻辑,提前发现格式匹配问题,避免隐性报错:

$date = \DateTime::createFromFormat('d-m-Y H:i', '25-12-2001 20:30');
if (!$date instanceof \DateTimeInterface) {
    throw new \InvalidArgumentException('日期解析失败,请检查格式与字符串是否匹配');
}
$match1 = new Matchs();
$match1->setDescription('Description ')
   ->setDate($date);
$manager->persist($match1);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:18:02