我无法摆脱此错误消息:
调用非对象上的成员函数 format()
所以,我继续谷歌搜索并获得一些很好的来源,比如这个StackOverflow问题。
我试图做类似的事情,但我失败了。这是我的代码:
$temp = new DateTime();
/*ERROR HERE*/ $data_umat['tanggal_lahir'] = $data_umat['tanggal_lahir']->format('Y-m-d');
$data_umat['tanggal_lahir'] = $temp;
所以,我做了反复试验,我发现如果我这样做:
$data_umat['tanggal_lahir'] = date("Y-m-d H:i:s");
日期将成功转换,但它总是返回今天的日期(我不想要)。
我想转换日期,以便10/22/2013
2013-10-22
.
您正在非对象上调用方法 format()
。试试这个:
$data_umat['tanggal_lahir'] = new DateTime('10/22/2013');
$data_umat['tanggal_lahir'] = $data_umat['tanggal_lahir']->format('Y-m-d');
或单行:
$data_umat['tanggal_lahir'] = date_create('10/22/2013')->format('Y-m-d');
你可以使用 strtotime() 来转换它。 它将给定的日期转换为时间戳,然后通过使用 date() 函数将时间戳转换为所需的日期格式。
试试这个..
$date = '10/22/2013';
$timestamp = strtotime($date);
$new_date = date('Y-m-d',$timestamp );
>$data_umat['tanggal_lahir']
不是对象DateTime
的实例
用于使其成为DateTime
的实例
$data_umat['tanggal_lahir'] = new DateTime();
$data_umat['tanggal_lahir']
不是DateTime
的实例,无论$temp
如何。
$data_umat['tanggal_lahir']
是否意味着成为DateTime
的实例
$temp = new DateTime(); (need )
/*ERROR HERE*/ $data_umat['tanggal_lahir'] = $data_umat['tanggal_lahir']->format('Y-m-d');
$data_umat['tanggal_lahir'] = $temp;
<</p>
当使用 Symfony 或 Slim with Doctrine 时,请尝试以下操作:
//form[生日 = "2000-12-08"]
[...]
$birthday = DateTime::createFromFormat("Y-m-d",$formData['birthday']);
$obejct = new $object();
$object->setBirthday($birthday);
[...]
如果您在使用Symfony时遇到此问题,请尝试以下技巧:
打开:你的Symfony Root/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeType.php
转到声明函数convertToDatabaseValue()
的第 50 行。
原始代码:
return ($value !== null)
? $value->format($platform->getDateTimeFormatString()) : null;
更改为:
return ($value !== null)
? $value : null;
似乎Symfony在传递字符串作为日期字符串时正在进行额外的转换。
直接传递 DateTime ojbect 将不起作用,因为它会提示另一个错误,指出"对象日期时间无法转换为字符串"。