以下代码是否有更短的Datetime构造?

时间:2016-03-03 16:39:04

标签: php date datetime unix-timestamp

目前我正在使用这样的片段:

if (is_numeric($date)) {
    $datetime = new DateTime('@'.$date);
} else {
    $datetime = new DateTime($date);
}

其中$dateunixtimestamp或某个日期字符串,如2016/03/03

此构造的最佳故障保护等效物是什么?

也许有些单行?包装类?

我正在询问一些较短的构造,因为我们在系统的许多地方使用了上述构造。所以我想用更可读和更安全的东西来替换它。

2 个答案:

答案 0 :(得分:2)

如果您想在项目中重复使用某些内容,请将其包装在您自己的类中,例如

class AcmeDateTime extends \DateTime
{
    public function __construct($time = "now", DateTimeZone $timezone = null)
    {
        $time = is_numeric($time) ? "@" . $time : $time;
        parent::__construct($time, $timezone);
    }
}

答案 1 :(得分:0)

您可以在php中使用ternary operator4行缩短为一行,如下所示:

$datetime = new DateTime((is_numeric($date) ? '@' : '') . $date);