#laravel #datetime #php-carbon
Вопрос:
Я пытаюсь получить метку времени из другого часового пояса в Carbon / Laravel. Что-то меняется, но не метка времени (использую ли я ->format('U')
или ->timestamp
)
<?php
$datestring = '2021-05-29';
$date = CarbonCarbon::parse($datestring);
echo $date->format('H:i') . '<br>';
echo $date->timezone('Europe/London')->format('H:i') . '<br>';
echo $date->format('U') . '<br>';
echo $date->timezone('Europe/London')->format('U') . '<br>';
?>
Результаты:
00:00
01:00
1622246400
1622246400
Детская площадка: https://laravelplayground.com/#/snippets/a62f40ea-38a8-4145-9851-5d061905cfa0
Ответ №1:
Метка времени из другого часового пояса, кроме UTC, не существует.
Метка времени по определению является числом секунд, так January 1st 1970 midnight UTC
как «UTC» на самом деле явно указано в определении, она направлена на представление универсального момента времени, поэтому она необходима. Если у вас есть число секунд с другой даты (например, 1 января 1970 года по Гринвичу-5), это не отметка времени, это просто число секунд с произвольного момента, которое относится к вашей бизнес-логике, вы можете получить его с помощью:
$date->diffInSeconds('1970-01-01 00:00:00 -05:00');
Но имейте в виду, что необходимость делать это-верный признак плохо локализованного приложения.