PHP конвертировать будни и время (час) в GMT-представление - PullRequest
0 голосов
/ 11 марта 2012

У меня есть веб-приложение, которое позволяет пользователям выбирать выполнение определенной операции в определенный час в определенный день недели (например, в пятницу, 19:00) - повторение каждый рабочий день.Мои пользователи находятся в разных часовых поясах.Поэтому я хотел бы сохранить день / час в формате одного часового пояса, чтобы мое задание cron, которое выполняется ежечасно, могло запрашивать мою базу данных и быстро собирать все строки, представляющие задачи, которые должны быть выполнены в этот час.Каков наилучший способ сделать это?

По сути, мне нужно знать, как взять пятницу в 19:00 в Бостоне, штат Массачусетс или в субботу в 15:00, Сан-Франциско, штат Калифорния, и конвертировать оба в GMT (и сохранить в моей БД).Таким образом, когда я запускаю свое задание cron раз в час, я точно знаю, какое значение запрашивать базу данных, учитывая, какой день / час по Гринвичу она в настоящий момент.

EDIT 1 Через игру я пришелс чем-то:

date_default_timezone_set('America/New_York');
$time = strtotime('Friday 8:00pm');

echo date('w : G', $time);
echo '<br>';

date_default_timezone_set('GMT');
$date = date('w : G', $time);

echo $time;
echo '<br>';
echo $date;

Вывод:

5 : 20
1331942400
6 : 0

Это в основном правильный трек?

РЕДАКТИРОВАТЬ 2 Полезные детали,Мне действительно повезло, что информация о часовом поясе моего пользователя была сохранена как одна из них: http://www.php.net/manual/en/timezones.php

1 Ответ

2 голосов
/ 11 марта 2012

Если вы уже сохранили часовой пояс пользователя, вы можете добавить смещение по Гринвичу ко времени, чтобы получить дату по Гринвичу.

Я нахожусь в Колорадо, который в настоящее время составляет -7 по Гринвичу:

$offset = -7;
$gmt = ($offset * 60 * 60) + time();

даст метку времени Unix для часового пояса GMT.

Затем убедитесь, что ваш сервер имеет GMT по умолчанию или часовой пояс, вы можете установить часовой пояс, используя:

date_default_timezone_set('GMT');
...