如何从 mktime 到 datetime 对象?

mat*_*usa 3 php

我有一个 mktime 想要返回一个 datetime 对象。我想出的最好方法似乎太复杂了:

DateTime::createFromFormat("Y-m-d H:i:s",date("Y-m-d H:i:s",mktime(0, 0, 0, $data[$j]['month'], $data[$j]['day'],$data[$j]['year'])));
Run Code Online (Sandbox Code Playgroud)

有什么更好的方法吗?

Emi*_*röm 5

日期时间构造可以采用UNIX时间戳作为参数,所以只使用返回值从mktime直接在构造函数中,如果你使用前缀@

$datetimeobject = new DateTime('@' . mktime(0, 0, 0, $data[$j]['month'], $data[$j]['day'],$data[$j]['year']));
Run Code Online (Sandbox Code Playgroud)

或者你可以mktime完全跳过这一步,因为DateTime它也可以解析日期字符串(但如果你进行微优化,这将更加消耗资源):

$datetimeobject = new DateTime($data[$j]['year'] .'-'. $data[$j]['month'] .'-'. $data[$j]['day']);
Run Code Online (Sandbox Code Playgroud)

  • 如 [DateTime Compound Formats](http://php.net/manual/en/datetime.formats.compound.php):`$datetimeobject = new DateTime(mktime(...));` 将不起作用。您必须指定 '@' 运算符:`$datetimeobject = new DateTime("@".mktime(...));` (2认同)