我无法摆脱此错误消息:
在非对象
上调用成员函数format()
所以,我继续谷歌搜索并得到一些像this StackOverflow question这样的好来源。
我试着做类似的事,但我失败了。这是我的代码:
$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
。
答案 0 :(得分:9)
您正在非对象上调用方法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');
答案 1 :(得分:3)
您可以使用strtotime()来转换它。它将给定日期转换为时间戳,然后使用date()函数将时间戳转换为所需的日期格式。
试试这个..
$date = '10/22/2013';
$timestamp = strtotime($date);
$new_date = date('Y-m-d',$timestamp );
答案 2 :(得分:1)
$data_umat['tanggal_lahir']
不是DateTime
的实例,但$temp
是。
$data_umat['tanggal_lahir']
是DateTime
答案 3 :(得分:1)
$data_umat['tanggal_lahir']
不是对象DateTime
用于使其成为DateTime
$data_umat['tanggal_lahir'] = new DateTime();
答案 4 :(得分:1)
$temp = new \DateTime(); (need \ )
/*ERROR HERE*/ $data_umat['tanggal_lahir'] = $data_umat['tanggal_lahir']->format('Y-m-d');
$data_umat['tanggal_lahir'] = $temp;
答案 5 :(得分:1)
使用Symfony或Slim with Doctrine时,请尝试:
//表格[birthday =" 2000-12-08"]
[...]
$birthday = \DateTime::createFromFormat("Y-m-d",$formData['birthday']);
$obejct = new $object();
$object->setBirthday($birthday);
[...]
答案 6 :(得分:-2)
如果您在使用Symfony时遇到此问题,请尝试此hack:
打开:你的Symfony Root / vendor / doctrine / dbal / lib / Doctrine / DBAL / Types / DateTimeType.php
转到第50行宣布函数convertToDatabaseValue()
的内容。
原始代码:
return ($value !== null)
? $value->format($platform->getDateTimeFormatString()) : null;
更改为:
return ($value !== null)
? $value : null;
似乎Symfony在将字符串作为日期字符串传递时进行了额外的转换。
直接传递DateTime ojbect将不起作用,因为它会提示另一个错误,说“对象DateTime无法转换为字符串”。