从PHP <5.3中的时间戳创建DateTime

Yar*_*rin 58 php datetime timestamp php-5.2

如何在小于<5.3的版本中从时间戳创建DateTime?

在5.3中它将是:

$date = DateTime::createFromFormat('U', $timeStamp);
Run Code Online (Sandbox Code Playgroud)

DateTime构造函数需要一个字符串,但这对我不起作用

$date = new DateTime("@$timeStamp");
Run Code Online (Sandbox Code Playgroud)

Daw*_*hia 45

PHP 5> = 5.3.0

$date = new DateTime();
$date->setTimestamp($timeStamp);
Run Code Online (Sandbox Code Playgroud)

编辑:添加了正确的PHP版本setTimestamp

  • 认为这是PHP 5> = 5.3 (7认同)

小智 31

假设您想要日期和时间,而不仅仅是上一个答案中的日期:

$dtStr = date("c", $timeStamp);
$date = new DateTime($dtStr);
Run Code Online (Sandbox Code Playgroud)

尽管如此,这似乎很愚蠢.


Jon*_*nah 14

它没有用,因为你的$ timeStamp变量是空的.尝试在创建DateTime之前回显$ timeStamp的值,你会看到.如果你运行这个:

new DateTime('@2345234');
Run Code Online (Sandbox Code Playgroud)

你没有收到错误.但是,如果你运行:

new DateTime('@');
Run Code Online (Sandbox Code Playgroud)

它会产生你说它给你的确切错误.您需要进行一些调试并找出$ timeStamp为空的原因.

  • 请注意,在构造函数中使用“@”将忽略环境的当前时区和第二个参数中提供的时区,即使使用“$dateTime-&gt;modify('@'.1234)”时也使用“setTimezone(date_default_timezone_get)” ())` 从 UTC 时区更改为环境时区。 (2认同)

Yar*_*rin 3

以下作品:

$dateString = date('Ymd', $timeStamp);
$date = new DateTime($dateString);
Run Code Online (Sandbox Code Playgroud)