7

我无法摆脱此错误消息:

在非对象上调用成员函数 format()

所以,我继续谷歌搜索并获得一些像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

4

7 回答 7

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');
于 2013-10-07T08:52:46.577 回答
3

您可以使用 strtotime() 来转换它。它将给定的日期转换为时间戳,然后通过使用 date() 函数,您可以将时间戳转换为所需的日期格式。

尝试这个..

$date = '10/22/2013';
$timestamp = strtotime($date);
$new_date = date('Y-m-d',$timestamp );
于 2013-10-07T08:47:47.777 回答
1

$data_umat['tanggal_lahir']不是 的实例DateTime,但是$temp是。

$data_umat['tanggal_lahir']一个实例DateTime

于 2013-10-07T08:32:02.130 回答
1

$data_umat['tanggal_lahir']不是对象的实例DateTime

用于使其实例化DateTime

$data_umat['tanggal_lahir'] = new DateTime();
于 2013-10-07T08:37:00.447 回答
1

$temp = new \DateTime(); (need \ ) /*ERROR HERE*/ $data_umat['tanggal_lahir'] = $data_umat['tanggal_lahir']->format('Y-m-d'); $data_umat['tanggal_lahir'] = $temp;

于 2014-01-07T15:49:05.670 回答
1

当使用 Symfony 或 Slim 和 Doctrine 时,试试这个:

//form[生日=“2000-12-08”]

[...]

$birthday = \DateTime::createFromFormat("Y-m-d",$formData['birthday']);

$obejct = new $object();
$object->setBirthday($birthday);

[...]

于 2016-06-17T01:16:16.603 回答
-2

如果你在使用 Symfony 时遇到这个问题,试试这个 hack:

打开:你的 Symfony 根目录/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 将不起作用,因为它会提示另一个错误,即“无法将对象 DateTime 转换为字符串”。

于 2014-01-29T10:45:30.690 回答