Ответы сразу под вашим вопросом верны.Не нужно знать часовой пояс клиента, чтобы рассчитать, находится ли текущее время в часах работы.Неважно, в настоящее время это 8:00 утра по тихоокеанскому региону США, 11:00 утра по восточному побережью США или 11:00 вечера в Маниле, Филиппины.Важно то, какое время это относится к рабочим часам, а не к клиенту.
Обычно на всех веб-серверах, которые я запускаю, я устанавливаю время сервера в формате UTC.Когда люди вводят свои часы, попросите их ввести его в GMT или, если вы хотите, чтобы они могли вводить часы по местному времени, укажите список часовых поясов или комбинированный список на странице.Вы можете использовать функцию 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);
Теперь вы можете использовать эти часывычислить, являются ли часы рабочими часами или нет.