Хранение даты и времени как UTC в PHP/MySQL

Только добавить к предыдущим ответам: можно пойти вне предела на 2 ГБ на системы, загруженные с/3Gb [и дополнительно userva] флаги начальной загрузки.

45
задан random 30 April 2011 в 00:33
поделиться

3 ответа

MySQL: UTC_TIMESTAMP ()

Возвращает текущую дату и время в формате UTC. как значение в формате "ГГГГ-ММ-ДД ЧЧ: ММ: СС" или ГГГГММДДЧЧММСС.уууууу, в зависимости от того, является ли функция используется в строковом или числовом контексте

PHP: gmdate ()

Также PHP date_default_timezone_set () используется в PHP для установки текущего часового пояса для скрипта. Вы можете установить его в часовой пояс клиента, чтобы все функции форматирования возвращали время в его местном времени.

По правде говоря, мне было трудно заставить это работать, и я всегда натыкался на некоторые проблемы. Например. информация о времени, возвращаемая MySQL, не форматируется как 'UTC', поэтому strtotime преобразует ее в местное время, если вы не будете осторожны. Мне любопытно узнать, есть ли у кого-нибудь надежное решение этой проблемы, которое не ломается, когда даты пересекают границы носителя (HTTP-> PHP-> MySQL и MySQL-> PHP-> HTTP) с учетом XML и RSS / Atom.

44
ответ дан 26 November 2019 в 21:07
поделиться

NOW () дает вам время (включая смещение часового пояса) системы, в которой работает ваша база данных. Чтобы получить дату / время в формате UTC, вы должны использовать UTC_TIMESTAMP () , как описано в Справочном руководстве MySQL .

7
ответ дан 26 November 2019 в 21:07
поделиться

Я бы посоветовал вставить дату в часовом поясе UTC. Это избавит вас от головной боли в будущем, связанной с проблемами перехода на летнее время.

INSERT INTO abc_table (registrationtime) VALUES (UTC_TIMESTAMP())

Когда я запрашиваю свои данные, я использую следующий сценарий PHP:

<?php

while($row = mysql_fetch_array($registration)) { 

  $dt_obj = new DateTime($row['message_sent_timestamp'] ." UTC");
  $dt_obj->setTimezone(new DateTimeZone('Europe/Istanbul'));
  echo $formatted_date_long=date_format($dt_obj, 'Y-m-d H:i:s');
}
?>

Вы можете заменить значение DateTimeZone одним из доступно Часовые пояса PHP .

40
ответ дан 26 November 2019 в 21:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: