Какие инструменты даты и времени php использовать для смещения GMT

StackOverflow https://stackoverflow.com/questions/1015647

  •  06-07-2019
  •  | 
  •  

Вопрос

Похоже, что существует много способов приблизиться к массированию даты и времени в php.Обычно я каждый раз имею дело только с местным временем.Сегодня мне нужно работать в UTC.

Я делаю запрос к API, данные, которые они предоставляют мне о произвольной записи, являются:созданный:Чт, 18 июня 2009 21:44:49 +0000 * Задокументировано как "время создания записи UTC"

utc_offset:-28800 * Разница между пользователями re

Мне нужно преобразовать это в простую строку, чтобы показать пользователю, в какое время и дату были отправлены данные по его местному времени.

Я полагаю, вышесказанное переводится как, если в Калифорнии.например:Четверг, 18 июня 2009, 02:44:49 вечера

Моя цель - получить значение времени, которое я могу передать в date() для удобства форматирования в "красивом" формате.

Действительно ли это так просто, как преобразовать созданное выше время в секунды из эпохи, добавить смещение, а затем передать это в date ()?Есть на кого обратить внимание?

$created_time = 'Thu, 18 Jun 2009 21:44:49 +0000';
$utc_offset = -28800;
$seconds = strtotime($created_time);
$localized_time = $seconds + $utc_offset;

echo date(DATE_RFC822, $localized_time);

Спасибо

Это было полезно?

Решение

PHP должен делать это автоматически за вас.Я также могу НАСТОЯТЕЛЬНО рекомендовать использовать вместо этого объект DateTime .

$dt = новая дата-время($created_time);echo $dt->формат (DATE_RFC2822);

Функции даты и времени PHP учитывают часовой пояс..Убедитесь, что вы используете последнюю версию PHP, потому что было проделано много работы по улучшению этих систем.

Другие советы

Вы можете использовать date_default_timezone_set дата по умолчанию : timezone_set для переключения между часовыми поясами.В вашем случае вы бы передали информацию о часовом поясе из профиля пользователя.Как рекомендовал Evert, если вы используете PHP 5>= 5.2, пожалуйста, используйте более продвинутый Дата - время класс.

<?php
echo date('h:i:s')."\n";
date_default_timezone_set('Europe/Paris');
echo date('h:i:s')."\n";
date_Default_timezone_set('UTC');
echo date('h:i:s')."\n";
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top