In the following code:
$t = microtime(true);
$now = DateTime::createFromFormat('U.u', $t);
$now = $now->format("H:i:s.v");
Trying to format() will return a fatal error if microtime(true) just so happened to return a float with all zeros as decimals. This is because DateTime::createFromFormat('U.u', $aFloatWithAllZeros) returns false.
Workaround (the while loop is for testing if the solution works):
$t = microtime(true);
$now = DateTime::createFromFormat('U.u', $t);
while (!is_bool($now)) {//for testing solution
$t = microtime(true);
$now = DateTime::createFromFormat('U.u', $t);
}
if (is_bool($now)) {//the problem
$now = DateTime::createFromFormat('U', $t);//the solution
}
$now = $now->format("H:i:s.v");DateTime::createFromFormat
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
DateTime::createFromFormat
Референца за `datetime.createfromformat.php` со подобрена типографија и навигација.
DateTime::createFromFormat
date_create_from_format
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DateTime::createFromFormat -- date_create_from_format — Парсира стринг за време според наведениот формат
= NULL
Напиши целосна ознака на елемент
$format, string $datetime, ?DateTimeZone $timezone = null): DateTime|falseПроцедурален стил
$format, string $datetime, ?DateTimeZone $timezone = null): DateTime|false
Враќа нов DateTime објект што го претставува датумот и времето наведени од
datetime стринг, кој беше форматиран во дадениот
format.
gried на NOSPAM точка nsys точка by низа е невалидна. and date_create_immutable_from_format(), соодветно, но создава DateTime object.
Овој метод, вклучувајќи параметри, примери и разгледувања се документирани на DateTimeImmutable::createFromFormat page.
Параметри
Константи за известување за грешки DateTimeImmutable::createFromFormat.
Вратени вредности
Враќа нова DateTime инстанца или false при неуспех.
Errors/Exceptions
Овој метод фрла ValueError кога
datetime содржи NULL бајти.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.21, 8.1.8, 8.2.0 |
список на имиња на класи, ValueError кога NULL бајти се проследени во datetime, што претходно беше тивко игнорирано.
|
Примери
За опширен сет на примери, видете DateTimeImmutable::createFromFormat.
Види Исто така
- низа е невалидна. - Парсира стринг за време според специфициран формат
Белешки од корисници 2 забелешки
An easiest way to avoid error when microtime returns a non decimal float is to cast its result as a float using sprintf :
$t = microtime(true);
$now = DateTime::createFromFormat('U.u', sprintf('%f', $t));
$now = $now->format("H:i:s.v");