Я печатаю временные интервалы в соответствии с некоторыми рабочими часами с разницей в 30 минут, чтобы выбрать время начала онлайн-встречи.
Застрял в проблеме, вот краткое объяснение:
Часы работы (начало-конец) = 10:00–17:00.
Настройки рекламного места: 30 мин.
Тогда список слотов будет отображаться следующим образом:
10:00am - 10:30am - 11:00am - 11:30am - 12:00pm - 12:30pm - 01:00pm 01:30pm - 02:00pm - 2:30pm - 03:00pm - 03:30pm - 04:00pm - 04:30pm
Я получаю текущее время часового пояса сервера, используя жесткую переменную идентификатора часового пояса $UserTimeZoneIdentifire
и отключая все прошедшее время в соответствии с текущим временем работы часового пояса сервера.
$UserTimeZoneIdentifire = "America/Denver";
Например:
Если текущий часовой пояс клиента ABC: 12:33, то все временные интервалы с 10:00 до 12:33 будут отключены и доступны. начнется с 12:35 (минуты с округлением кратны 5).
Вот код:
/**
* If appointment date is current date then get current user's timezone time
*/
$UserTimeZoneIdentifire = "America/Denver";
if(strtotime($AppointmentDate) == strtotime(date("Y-m-d"))) {
date_default_timezone_set($UserTimeZoneIdentifire);
echo $Biz_start_time = $BusinessHours['Biz_start_time']; echo "--biz start time<br>";
echo $UserCurrentTime = date("h:i A"); echo "--current server time<br>";
echo $ServerCurMinute = substr($UserCurrentTime, 3,5); echo "--strip minutes time<br>";
echo $RoundOffMinute = round(($ServerCurMinute+5/2)/5)*5; echo "--round off minutes time<br>";
if($RoundOffMinute > 55) {
/*
* If minutes are greater then 55 then add 1 hour in time
*/
$UserCurrentTime = substr_replace($UserCurrentTime, "00", 3, 2);
$UserCurrentTime = date("h:i A", strtotime("+1 hour", strtotime($UserCurrentTime)));
} else {
if($RoundOffMinute <= 5) {
$RoundOffMinute = "0".$RoundOffMinute;
}
$UserCurrentTime = substr_replace($UserCurrentTime, $RoundOffMinute, 3, 2);
}
$Biz_start_time = $UserCurrentTime;
$Biz_end_time = $BusinessHours['Biz_end_time'];
} else {
$Biz_start_time = "10:00am ";
$Biz_end_time = "05:00pm";
}
Проблема в том, что я сохранил жестко закодированное значение моего идентификатора часового пояса в переменной php. Но как я могу получить текущий идентификатор часового пояса сервера, используя php для динамической установки переменной $UserTimeZoneIdentifire, а не жестко закодированного значения в любом часовом поясе?
Итак, любая помощь и другая техника ценятся через вас, ребята. Спасибо.
UTC
не правильное имя идентификатора, попробуйте это на действующем сервере, а не на локальном хосте. - person Frank   schedule 09.09.2013UTC
, проверьте здесь. - person Frank   schedule 09.09.2013