我如何转换我的日期对象以在 Symfony formbuilder 中使用它?

How can I convert my date object to use it in Symfony formbuilder?

我想在我的表单生成器中使用日期。

当我转储变量 $date 时,我得到输出:

DateTime @1536139353 {#2479 ▼
  date: 2018-09-05 11:22:33.0 Europe/Paris (+02:00)
}

当我现在尝试像这样在我的表单构建器中使用它时:

$options['format'] = 'dd.MM.yyyy';
$options['data'] = new \DateTime($date);

然后我收到一条错误消息:

DateTime::__construct() expects parameter 1 to be string, object given

你可以只使用 strtotime

回显日期('Y-m-d H:i:s', strtotime($your_date_string));

或者您可以使用 DateTime::createFromFormat() 静态方法。

希望对你有所帮助

说明

DateTime是一个对象,这里需要从对象中获取格式化后的字符串。
幸运的是,DateTime 对象提供了 format() 方法,该方法用于 return 将 date/time 作为所需格式的字符串。
在本例中 d.m.Y,将输出 16.04.2020

(new \DateTime($date))->format('d.m.Y');

您的用例

您似乎正在使用已经是 DateTime 对象的 $date 来创建新的 DateTime 对象。这行不通,也没有必要。

由于$date已经是\DateTime的一个实例,可以直接使用

$options['format'] = 'dd.MM.yyyy';
$options['data'] = $date->format('d.m.Y');

来源

格式

要选择所需的格式,请查看此处的文档
https://www.php.net/manual/de/function.date.php

日期时间对象

构建时必须传递可解释的日期字符串。 https://www.php.net/manual/de/class.datetime.php

$date 已经是一个日期时间:

DateTime @1536139353 {#2479 ▼
  date: 2018-09-05 11:22:33.0 Europe/Paris (+02:00)
}

所以不需要这样转换new \DateTime($date);

解决方法是:

$options['format'] = 'dd.MM.yyyy';
$options['data'] = $date;