在 PHP 中转换日期时,“在非对象上调用成员函数 format()”


"Call to a member function format() on a non-object" when converting date in PHP

我无法摆脱此错误消息:

调用非对象上的成员函数 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>

div class="answers">

当使用 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 将不起作用,因为它会提示另一个错误,指出"对象日期时间无法转换为字符串"。