Если я беру текущую временную метку с помощью функции NOW() в MySQL, могу ли я захватить это поле через php и предоставить это время в разных часовых поясах? В основном, преобразование текущего времени в текущий часовой пояс в другой часовой пояс?Временная метка PHP и MySQL
ответ
Вы можете использовать DateTimeZone
класс:
$gmt = new DateTimeZone("GMT");
$datetimeInGMT = new DateTime($now, $gmt);
Он также принимает места в виде continent/city
, например, Europe/London
.
Если даты и времени не является UTC, вы можете использовать setTimezone
:
$datetimeInGMT = new DateTime($now, new DateTimeZone("America/New_York"));
$datetimeInGMT->setTimezone(new DateTimeZone("GMT"));
обработки часовых поясов MySQL является гораздо более сложным, чем РНР. Он обрабатывает простой часовой пояс (EST, PST и т. Д.) И то, что я назову «региональными часовыми поясами» (America/Eastern). Использование региональных зон использует правильное преобразование, включая летнее время, даже когда правила летнего времени менялись с годами.
То, что я сделал, хранит все мои данные как UTC, используя функцию UTC_TIMESTAMP(). Затем в запросах я использую функцию MySQL CONVERT_TZ() для моего целевого часового пояса. http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html
Примечание: вам может потребоваться обновить таблицы часовых поясов. http://dev.mysql.com/downloads/timezones.html
С PHP 5, PHP является более сложным из двух: класс 'DateTime' полностью поддерживает часовые пояса. Временная метка «DateTime» может быть установлена и перекрестно преобразована в любую зону. MySQL не может хранить информацию о часовом поясе в поле «DATETIME» вообще. Тем не менее, 'CONVERT_TZ' является допустимым подходом, конечно –
Не обязательно. Прочтите ответ Аарона на этот вопрос http://stackoverflow.com/questions/1646171/mysql-datetime-fields-and-daylight-savings-time-how-do-i-reference-the-extra –
- 1. Временная метка PhP за день
- 2. Временная метка в Java и временная метка в моем Sql
- 3. Временная метка отладки MySQL от
- 4. MySQL Временная метка времени запроса
- 5. Как проверить, установлена ли временная метка в MySQL и PHP?
- 6. Временная метка из строки PHP
- 7. 64-разрядная временная метка php
- 8. Datetime или временная метка для поля MySQL?
- 9. Временная метка JavaScript для проверки на MySQL
- 10. OrmLite, календарь и временная метка
- 11. Временная метка MySQL не сохраняется в GMT?
- 12. MySQL C# Вставить запрос Временная метка сервера
- 13. Значение запаса Uptime как временная метка MySQL
- 14. Временная метка MySQL при обновлении определенного столбца с помощью PHP
- 15. Временная метка для начала недели в mySQL
- 16. MySQL - временная метка в том, где статья
- 17. PHP MYSQL временная метка даты необходимости возвращения 00:00:00
- 18. 18-разрядная временная метка?
- 19. Столбец «Временная метка журнала MySQL» - Trigger
- 20. Временная метка MySQL для преобразования даты Java
- 21. Mysql - Самая недавняя временная метка нескольких записей
- 22. Mysql Текущая временная метка и время() показаны разные значения
- 23. Временная метка файла PHP (изменение Attribut)
- 24. PHP Только месяц понадобился целая временная метка
- 25. Временная метка в .NET
- 26. Временная метка Mediafire?
- 27. обратная временная метка
- 28. Временная метка замены цвета
- 29. Какая временная метка?
- 30. Временная метка UIEvent
Правильно, но что, если у меня уже есть временная метка в другом часовом поясе? Могу ли я преобразовать его в другой часовой пояс? – John
@John Попробуйте новый код, который я добавил. – marcog
+1 (и если бы я мог, еще один +1 для 'DateTime'), но не забывайте, что для этого вам нужно знать текущий часовой пояс сервера mySQL, чтобы получить правильную дату начала! Настройка часового пояса MySQL может отличаться от зоны системы. –