为了账号安全,请及时绑定邮箱和手机立即绑定

DateTime::setTime() 期望参数 1 为 int,给定字符串,但在尝试观察时消失

DateTime::setTime() 期望参数 1 为 int,给定字符串,但在尝试观察时消失

PHP
慕妹3242003 2023-06-24 15:11:40
我在 php7.4 中有以下代码,用于从另一个创建日期    $date = clone $regularCourse->getNextCronExecutionDate();    $date->modify('+ 3 days');    $date->setTime($date->format('H'), $date->format('i'), 0, 0);我已经在本地和生产中对其进行了测试,并且它曾经工作得很好。突然间它开始失败。与错误DateTime::setTime() expects parameter 1 to be int, string given它会定期且可预测地失败,因为我的哨兵给了我 4000 次该事件的发生次数(这是一个每分钟运行一次的 cron 任务,哨兵向我显示过去几天该错误每小时发生 60 次)但 !现在我已经添加了一些调试来显示该值,它不再失败我使用的代码     // Added to debug some courses failing     ob_start();     var_dump($date);     $dumped_message= ob_get_clean();     \Sentry\addBreadcrumb(         new \Sentry\Breadcrumb(             \Sentry\Breadcrumb::LEVEL_INFO,             \Sentry\Breadcrumb::TYPE_DEFAULT,             'error_reporting',             "course Id " . $regularCourse->getId()         )     );     \Sentry\addBreadcrumb(         new \Sentry\Breadcrumb(             \Sentry\Breadcrumb::LEVEL_INFO,             \Sentry\Breadcrumb::TYPE_DEFAULT,             'error_reporting',             $dumped_message         )     );我不知道 var_dump-ing 变量是否会产生一些副作用?所以我的问题这个错误什么时候发生?为什么我的调试代码使问题消失?
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

如果您使用,declare(strict_types=1)则需要注意类型:

  • DateTime::setTime()需要整数:

    public DateTime::setTime ( int $hour , int $minute [, int $second = 0 [, int $microseconds = 0 ]] ) : DateTime
  • DateTime::format()返回字符串:

    public DateTime::format ( string $format ) : string

在这种情况下,您可以直接转换为 int,尽管这可以轻松掩盖其他格式错误:

declare(strict_types=1);

$date = new \DateTime();

// Correct

$date->setTime((int)$date->format('H'), (int)$date->format('i'), 0, 0);

// Typo, no error thrown becuase `Sunday` casts to 0

$date->setTime((int)$date->format('l'), (int)$date->format('i'), 0, 0);

... 尽管


$date = new \DateTime();

$date->setTime($date->format('l'), $date->format('i'), 0, 0);

// DateTime::setTime() expects parameter 1 to be int, string given


查看完整回答
反对 回复 2023-06-24
  • 1 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信