В моем postgresql у меня есть следующий столбец с именем «created», который имеет временную метку типа с часовым поясом
Поэтому я вставил запись в соответствии с форматом, который, как я считаю, является UTC.
2015-10-02 09: 09: 35 + 08
Я использую php Carbon library, поэтому я сделал следующее:
$date = Carbon\Carbon::parse('2015-10-02 09:09:35+08'); echo $date->->toDatetimeString(); //gives result as 2015-10-02 09:09:35
Как я могу использовать библиотеку для эхо-ответа правильного часового пояса, который включает добавление +8 в вышеуказанный формат даты и времени? Временная зона, которую я использую, – «Азия / Сингапур» .
Время должно быть напечатано на местное время, которое будет 2015-10-02: 17:09:35:
Вы можете сделать это, используя собственный php без использования Carbon:
$time = '2015-10-02 16:34:00+08'; $date = DateTime::createFromFormat('Ymd H:i:s+O', $time); print $date->format('Ymd H:i:s') . PHP_EOL; $date->setTimeZone(new DateTimeZone('Asia/Singapore')); print $date->format('Ymd H:i:s') . PHP_EOL; $date->setTimeZone(new DateTimeZone('Etc/UTC')); print $date->format('Ymd H:i:s') . PHP_EOL;
Попробуйте это с помощью стандартного PHP:
$raw = '2015-10-02 09:09:35+08'; $date = substr($raw,0,19); $tzOffset = (strlen($raw) > 19) ? substr($raw,-3) : 0; $timestamp = strtotime($date) + (60 * 60 * $tzOffset); $localTime = date('Ymd H:i:s',$timestamp); echo 'local time:['.$localTime.']';
Результат:
local time:[2015-10-02 17:09:35]
Это также будет работать без смещения часового пояса или отрицательного.
Попробуй это:
$timestamp = '2015-10-02 16:34:00'; $date = Carbon::createFromFormat('Ymd H:i:s', $timestamp, 'Asia/Singapore');