Zadejte hledaný výraz...

PHP – Chyba při čtení časového razítka

franta.hosek
verified
rating uzivatele
31. 8. 2021 08:23:53
Ahoj,
prosím o pomoc. Mám část kódu, která vrací chybu:
Exception: DateTime::__construct(): Failed to parse time string (-10702651976) at position 11 (6):
a kód:
$create_time = 'zde je časové razítko'; //1630318214721, 1630318296887, není to string, je to int
$create_time = new DateTime(strtotime($create_time));
echo $create_time->format('Y-m-d H:i:s'); //tohle pak ukládám do DTB
Problém je, že čas od času mi tam dle logu skočí ta chyba a skript skočí. Ale přitom do strtotime() jde opravdu správné kladné číslo. Nejde tam záporné číslo. A nějak nerozumím tomu, kde se to bere... Někdy se to stane u třetího vkládaného záznamu, někdy třeba u třicátého. Ale stane se to...
31. 8. 2021 08:23:53
https://webtrh.cz/diskuse/php-chyba-pri-cteni-casoveho-razitka/#reply1489656
Co takto? Přijde mi, že $create_time je klasický timestamp s milisekundama, tak mi přijde zbytečné tam zabalovat ještě fci strtotime, když se to dá takto ...
31. 8. 2021 08:31:00
https://webtrh.cz/diskuse/php-chyba-pri-cteni-casoveho-razitka/#reply1489655
TomasX
verified
rating uzivatele
(4 hodnocení)
31. 8. 2021 08:44:35
funkce strtotime je na něco jiného, ona bere jako vstup textovou interpretaci datumu a vrací právě ten int jako timestamp, třída DateTime v konstruktoru zase bere string a nikoliv int, tyhle funkce takhle skombinovat nemůžeš. strtotime je zkratkou "string to time", to už by mohlo napovědět.
DateTime je čistčí, ale další výpočetně rychlejší možností je použití funkce date a snížení přesnosti toho timestamp přímo dělením (odstranění ms a ponechání pouze sekund),
echo date('Y-m-d H:i:s', (int)$create_time/1000);
31. 8. 2021 08:44:35
https://webtrh.cz/diskuse/php-chyba-pri-cteni-casoveho-razitka/#reply1489654
Pro odpověď se přihlašte.
Přihlásit