%PDF- %PDF-
| Direktori : /home/bitrix/www/local/php_interface/lib/vendor/kreait/firebase-php/src/Firebase/Util/ |
| Current File : //home/bitrix/www/local/php_interface/lib/vendor/kreait/firebase-php/src/Firebase/Util/DT.php |
<?php
namespace Kreait\Firebase\Util;
use DateTimeImmutable;
use DateTimeZone;
use Kreait\Firebase\Exception\InvalidArgumentException;
class DT
{
public static function toUTCDateTimeImmutable($value): DateTimeImmutable
{
$tz = new DateTimeZone('UTC');
$now = time();
if (ctype_digit($value)) {
// Seconds
if (\strlen($value) === \strlen($now)) {
return DateTimeImmutable::createFromFormat('U', $value)
->setTimezone($tz);
}
// Milliseconds
if (\strlen($value) === \strlen($now * 1000)) {
return DateTimeImmutable::createFromFormat('U.u', sprintf('%F', $value / 1000))
->setTimezone($tz);
}
}
if ($value instanceof \DateTimeInterface) {
return DateTimeImmutable::createFromFormat('U.u', $value->format('U.u'))
->setTimezone($tz);
}
// microtime
if (preg_match('@(?P<msec>^0?\.\d+) (?P<sec>\d+)$@', $value, $matches)) {
$value = (float) $matches['sec'] + (float) $matches['msec'];
return DateTimeImmutable::createFromFormat('U.u', sprintf('%F', $value))
->setTimezone($tz);
}
try {
return (new DateTimeImmutable($value))->setTimezone($tz);
} catch (\Throwable $e) {
throw new InvalidArgumentException($e->getMessage());
}
}
}