在PHP中使用DateTime作为一行代码


Using DateTime as a one-liner in PHP

一个简短的问题,我真的找不到答案。

在过程式PHP中,我可以回显日期
echo date('Y-m-d'); ?>

在面向对象的PHP中,我必须使用两行

$now = new DateTime();
echo $now->format('Y-m-d');

有可能在一行中完成吗?

echo (new DateTime())->format('Y-m-d');

有两个选项:

  1. 使用括号创建一个DateTime实例并格式化结果:

    // requires PHP >= 5.4
    echo (new 'DateTime())->format('Y-m-d');
    
  2. 您可以使用date_create函数:

    // date_create is similar to new DateTime()
    echo 'date_create()->format('Y-m-d');
    

实例:https://3v4l.org/fllco

您可以这样尝试:

echo $date = new DateTime('2016-01-01');

面向对象风格:

<?php
try {
    $date = new DateTime('2000-01-01');
} catch (Exception $e) {
    echo $e->getMessage();
    exit(1);
}
echo $date->format('Y-m-d');
?>
程序风格:

<?php
$date = date_create('2000-01-01');
if (!$date) {
    $e = date_get_last_errors();
    foreach ($e['errors'] as $error) {
        echo "$error'n";
    }
    exit(1);
}
echo date_format($date, 'Y-m-d');
?>