|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2017-12-04 16:42 UTC] saifmsg at yahoo dot com
Description: ------------ There need to be an easy way to create DateTime object from unix timestamp when "declare(strict_types=1)" is set. The problem is "createFromFormat" expects second parameter to be a string and it forces it to be casted into string. There are other ways also but not quite simple (see the attached code). It would be simple and easy if there is a factory method: DateTime::createFromTimestamp(int $timestamp) This was requested before the release of "strict_types", original feature request: https://bugs.php.net/bug.php?id=43595 Test script: --------------- <?php declare(strict_types=1); // get timestmap as int from model // for test lets set the current time. $timestamp = time(); // Option: 1 $dateTime = DateTime::createFromFormat('U', (string)$timestamp); // Option: 2a $dateTime = new DateTime(); $dateTime->setTimestamp($timestamp); // Option: 2b $dateTime = (new DateTime())->setTimestamp($timestamp); // While it could have been simpler: // $dateTime = DateTime::createFromTimestamp($timestamp); PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Nov 03 18:00:01 2025 UTC |
new DateTime("@" . $timestamp) ? strict_types as an argument only works as long as your value is an int. If it's a string, say from $_GET/POST or some database drivers, then it won't work and you're back to typecasting. That said, Unix timestamps are such a widespread concept that adding a factory method specifically for them could be worthwhile.DateTime("@" . $timestamp) is just another way to type cast. I will be surprised if anybody is storing timestamp as string in a database. And as long as strict_types is enabled it does not make sense to treat it anything else, it really helps in validating input from $_GET/$_POST. You are right it is ubiquitous and that is why it is important.