PHP:如何将DATETIME作为对象放入数组中并输出echo?

10

希望标题不会太晦涩。我有一个包含DATETIME对象的数组,现在我只是想知道如何将其输出到页面上。

 ["created"]=> object(DateTime)#3 (3) { ["date"]=> string(19) "2010-10-22 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/London"

有人能帮我解决吗?

尝试使用date()函数但出现以下错误:

Warning: date() expects parameter 2 to be long, object given in C:\

非常感谢任何帮助,

Jonesy


回显 ((array)myArray["created"])['date']; 或者你可以 ->format(DateTime::DATE_FORMAT_CONST); - bfday
4个回答

11

使用DateTime::format()。掩码语法与date()相同。

echo $value->format('Y-m-d H:i:s');

10

尽管我不确定这是否能够具体回答问题(最佳答案已经有了),但我想补充一下,因为我没有找到其他提到过上述格式 (date/timezone_type/timezone) 的地方。

如果你已经将日期从对象转换为数组:

  • 通过 var_export

DateTime::__set_state(array( 'date' => '2017-12-05 11:58:25.428595', 'timezone_type' => 3, 'timezone' => 'US/Pacific', ))

  • 或者通过 json_encode

{"date":"2017-12-05 11:57:07.938671","timezone_type":3,"timezone":"US\/Pacific"}

你可以再次使用上面提到过的 DateTime::__set_state 魔术方法将其转换为 DateTime 对象

我不确定这里的 __set_state 如何双向转换,但它确实很神奇。我找不到文档。

但是你可以在这里测试一下: http://sandbox.onlinephpfunctions.com/code/0a18e6937e7d4373beb91713f2e6e5f75f9af3e2


4
离题但有用。 - bfday

5

1
如果它是一个真正的php5 DateTime对象,那么您可以使用format方法来输出它。
$myDate = $myArray['created'];
echo $myDate->format('Y-m-d H:i:s');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接