Как я могу получить штамп времени UTC / GMT +/-, используя функцию date () PHP? Например, если я попытаюсь
date("Ymd H:i:s", time());
Я получу отметку времени Unix; но мне нужно получить отметку времени UTC / GMT со строкой GMT / UTC +/- 0400 или GMT / UTC +/- 1000 на основе локальных таймингов.
Использование gmdate
всегда будет возвращать дату GMT. Синтаксис такой же, как и для date
.
Простой gmdate () будет достаточно
<?php print gmdate("Ymd\TH:i:s\Z");
$time = time(); $check = $time+date("Z",$time); echo strftime("%B %d, %Y @ %H:%M:%S UTC", $check);
Как уже упоминалось ранее , начиная с PHP 5.2.0 вы можете использовать класс DateTime
и указать часовой пояс UTC с экземпляром DateTimeZone
.
Документация DateTime __construct () предполагает отказ от первого параметра при создании экземпляра DateTime для получения текущего времени.
$date_local = new \DateTime(); $date_utc = new \DateTime(null, new \DateTimeZone("UTC")); echo $date_local->format(\DateTime::RFC850); # Saturday, 18-Apr-15 13:23:46 AEST echo $date_utc->format(\DateTime::RFC850); # Saturday, 18-Apr-15 03:23:46 UTC
date("Ymd H:i:s", time() - date("Z"))
Помимо вызова gmdate
вы также можете поместить этот код перед остальной частью кода:
<?php date_default_timezone_set("UTC"); ?>
Это заставит остальные ваши вызовы, связанные с датой и временем, использовать часовой пояс GMT / UTC.
Вы можете использовать функцию gmmktime без аргументов, чтобы получить текущую временную метку UTC:
$time = gmmktime(); echo date("Ymd H:i:s", $time);
gmmktime будет работать только в том случае, если время вашего сервера использует UTC. Например, мой сервер настроен на US / Pacific. перечисленная функция выше echos back Pacific time.
Вы можете использовать следующее, чтобы получить время UTC:
date_default_timezone_set('Asia/Calcutta'); $current_date = date("Y/m/dg:i A"); $ist_date = DateTime::createFromFormat( '"Y/m/dg:i A"', $current_date, new DateTimeZone('Asia/Calcutta') ); $utc_date = clone $ist_date; $utc_date->setTimeZone(new DateTimeZone('UTC')); echo 'UTC: ' . $utc_date->format('Ymd g:i A');
/** * Converts a local Unix timestamp to GMT * * @param int Unix timestamp * @return int */ function local_to_gmt($time = '') { if ($time === '') { $time = time(); } return mktime( gmdate('G', $time), gmdate('i', $time), gmdate('s', $time), gmdate('n', $time), gmdate('j', $time), gmdate('Y', $time) ); }