Ответы сразу под вашим вопросом верны. Не должно быть необходимости знать часовой пояс клиента, чтобы вычислить, находится ли текущее время в пределах часов работы. На самом деле не имеет значения, сейчас 8:00 по тихоокеанскому времени в США, 11:00 по восточному поясу США или 23:00 по Маниле, Филиппины. Важно то, какое время относится к часам работы, а не к клиенту.
Обычно на всех веб-серверах, которые я запускаю, я устанавливаю время сервера в формате UTC. Когда люди вводят свои часы, либо попросите их ввести их по Гринвичу, либо, если вы хотите, чтобы они могли вводить часы в своем местном времени, разместите на странице список часовых поясов или поле со списком. Вы можете использовать функцию PHP DateTimeZone::listAbbreviations(), чтобы помочь.
Так, например, скажем, кто-то вводит, что его часы с 9:00 до 17:00 в часовом поясе Азии/Калькутты. Когда вы используете время для вычислений, сделайте что-то вроде этого, предполагая, что у вас есть строки с именами вроде hrs_start
, hrs_end
и hrs_tz
:
$hrs_tz = new DateTimeZone($row['hrs_tz']);
$hrs_start = new DateTime($row['hrs_start'], $hrs_tz);
$hrs_end = new DateTime($row['hrs_end'], $hrs_tz);
Теперь вы можете использовать эти часы, чтобы рассчитать, являются ли часы рабочими или нерабочими.
person
King Skippus
schedule
30.05.2011