Итак, у меня есть сервер в Денвере с пользователем в Новой Зеландии. Я знаю все о пользователе (часовом поясе и т. Д.), И через программу они просят, чтобы что-то произошло заранее - скажем, в 11:30 5 августа 2013 года. У меня есть задание CRON, которое выполняется каждые 15 минут и запрашивает базу данных, если какие-либо запросы ожидаются в течение следующих 15 минут, но как я могу конвертировать их сохраненное время в эквивалент серверов.Серверное время - вождение меня гайки :-)
Я установил часовой пояс по умолчанию для расчетов:
date_default_timezone_set('America/Denver')
Я беру время на сервере и превратить его в эпоху:
strtotime(date('Y-m-d H:i:s'))
я добавляю 15 минут, чтобы создать диапазон :
$forward15 = strtotime('now +15 minutes')
Я получаю выбранную вами дату из базы данных (и их часовой пояс):
2013-08-05 11:30:00
Теперь что? Если я преобразую это в эпоху, это будет только версия серверов этой даты.
Не нужно ли сначала преобразовывать пользователей в будущее в метку времени? например $ futuredate = новый DateTime ('2013-08-05 11:30', новый DateTimeZone ('Pacific/Auckland')); $ newdate = $ futuredate-> format ('Y-m-d H: i: s'); $ timestamp = strtotime ($ newdate); – user2086003
Да: я просто давал идею, как действовать дальше. Вы можете преобразовать его в метку времени и добавить эквивалент 5 часов или использовать функцию gmdate(), где вы можете добавить смещение, как описано в anwser of liyakat. – Matthijs
Вопрос нового пользователя - почему именно 5 часов? Разве разница во времени не была бы + или - 5 часов для летней экономии PLUS дополнительной разницы в местоположении? Извините за то, что вы так неуверены в расчетах времени. – user2086003