Php 如何在symfony2编写自己的控制台命令时以正确的格式获取日期

Php 如何在symfony2编写自己的控制台命令时以正确的格式获取日期,php,symfony,Php,Symfony,如何在symfony2编写自己的控制台命令时以正确的格式获取日期 $plantype = $allDbName->getPlanType(); $planEndOn = $allDbName->getNextPaymentDate(); $p = $planEndOn->format('H:i:s \O\n Y-m-d'); $currentDate = new \DateTime(); $date = date_modify($p, '-5 day'); $outpu

如何在symfony2编写自己的控制台命令时以正确的格式获取日期

$plantype = $allDbName->getPlanType();
$planEndOn = $allDbName->getNextPaymentDate();
$p = $planEndOn->format('H:i:s \O\n Y-m-d');
$currentDate = new \DateTime();

$date =   date_modify($p, '-5 day');

$output->writeln($date);
在控制台中获取错误

DateTime::format()
返回一个字符串,因此
$p
是一个字符串,而不是DateTime

你应该这样做

$planEndOn = $allDbName->getNextPaymentDate();
$planEndOn->modify('-5 days');
$output->writeln($planEndOn->format('H:i:s \O\n Y-m-d'));

错误信息很清楚

date_modify($p, '-5 day');
要求
$p
为日期时间对象

但此时它是一个字符串,因为您已经使用
->format()
因此,请更改脚本的顺序:

$plantype = $allDbName->getPlanType();
$planEndOn = $allDbName->getNextPaymentDate();
$p =   date_modify($planEndOn, '-5 day');
$date = $p->format('H:i:s \O\n Y-m-d');

$output->writeln($date);
我找到了解决办法


$planEndOn=$allDbName->getNextPaymentDate()$allDbName->getNextPaymentDate()->格式('Y-m-d'):0

您是否尝试过
$date=date_修改(planEndOn,'-5天')$输出->写入($date->format('H:i:s\O\n Y-m-d'))?是的,我已尝试在屏幕截图中查看我已编辑但未收到此错误OK,你看到我的更新了吗?我已尝试过它它不工作[Symfony\Component\Debug\Exception\FatalErrorException]错误:对非对象调用成员函数format()时收到此错误谢谢帮助,但我收到此错误[Symfony\Component\Debug\Exception\ContextErrorException]警告:date\u modify()要求参数1为DateTime,给定为null