Передача международного времени в PHP - PullRequest
0 голосов
/ 20 декабря 2011

Просто быстрый вопрос по работе с международными часовыми поясами и GMT.

У меня есть приложение, которое должно отправлять электронную почту в определенное время (6 утра) для каждого человека на международном уровне в зависимости от его часового пояса GMT + -. Я в недоумении о том, как это должно быть обработано с GMT и часовыми поясами. Любой вклад приветствуется.

Ответы [ 3 ]

1 голос
/ 20 декабря 2011

Вы можете использовать функцию установки часового пояса php, как показано ниже

date_default_timezone_set ( 'Америка / Los_Angeles');

С помощью этой функции вы можете узнать время пользователя. На основании этого вы можете отправить электронное письмо.

Для получения дополнительной ссылки date_default_timezone_set

1 голос
/ 30 декабря 2011

Наивно, вы можете собрать (или каким-то образом определить ) идентификатор часового пояса ( tzid ) для каждого из ваших пользователей и просто запустить задание cron в верхней части каждого UTC.часовая проверка, является ли текущее время 06:00 в любой из этих зон.

Это не так просто, потому что есть несколько часовых поясов, которые не имеют часовых смещений от UTC, таких как Америка/ St_Johns (UTC-03: 30) и Азия / Катманду (UTC + 05: 45), и эти пользователи не будут получать никаких писем, если вы запускаете cron только ежечасно.Таким образом, вы можете запускать cron каждые четверть часа, просто чтобы быть в безопасности.

Но поскольку задания cron часто начинаются через несколько секунд после , запланированного для запуска, выне следует проверять на равенство с 06:00:00.Кроме того, у часовых поясов нет с шагом в четверть часа (но, к счастью, все общепризнанные зоны есть), поэтому, чтобы быть педантичным, вы можете оценить, находится ли текущее время в пределах определенногоwindow.

Если, например, вы запускаете свой cron каждые 15 минут, увеличьте это окно на 15 минут ( например, 05:55 до 06:10), чтобы убедиться, чтопоймать крайние случаи.Все еще есть теоретический шанс, что запуск cron может быть пропущен ... но без сохранения дополнительных данных, которые указывают, было ли кому-то отправлено сегодняшнее электронное письмо (и не составляет ли это разницу, если они этого не сделали), это лучшее из того, что выможно сделать.

0 голосов
/ 20 декабря 2011

Вы можете запускать cron, чтобы каждый час проверять, существует ли один из ваших пользователей где-то там, где его 6 утра.

...