Как динамически получить идентификатор часового пояса сервера в php?

Я печатаю временные интервалы в соответствии с некоторыми рабочими часами с разницей в 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, а не жестко закодированного значения в любом часовом поясе?

Итак, любая помощь и другая техника ценятся через вас, ребята. Спасибо.


person Frank    schedule 09.09.2013    source источник
comment
Начните использовать класс DateTime вместо функций date(), strtotime(), time() и т. д.   -  person Glavić    schedule 09.09.2013
comment
Мне нужно имя идентификатора часового пояса, например этот .   -  person Frank    schedule 09.09.2013
comment
Я думаю stackoverflow. com/questions/4700156/ ответит на ваш вопрос.   -  person Marco Frost    schedule 09.09.2013
comment
@Marco выше вопрос, дающий вывод: UTC не правильное имя идентификатора, попробуйте это на действующем сервере, а не на локальном хосте.   -  person Frank    schedule 09.09.2013
comment
Вы запросили часовой пояс сервера, но похоже, что вы ищете пользователя. Вы уверены, что они будут одинаковыми? Если нет, см. stackoverflow.com/a/16526897/634824.   -  person Matt Johnson-Pint    schedule 09.09.2013
comment
Он показывает UTC только на активном сервере здесь.   -  person Frank    schedule 09.09.2013
comment
Часовой пояс сервера см. на странице stackoverflow.com/a/3498147/634824.   -  person Matt Johnson-Pint    schedule 09.09.2013
comment
спасибо, @Matt, но то же самое на действующем сервере UTC, проверьте здесь.   -  person Frank    schedule 09.09.2013
comment
На что ты нам намекаешь? Мы не можем видеть ваш код в этом...   -  person Matt Johnson-Pint    schedule 09.09.2013
comment
Перейдите туда, нажмите кнопку, выберите сегодняшнюю дату, обслуживание + персонал, затем перейдите к следующему. временные интервалы, появляющиеся во втором модальном окне. и я показываю вывод над временными интервалами.   -  person Frank    schedule 09.09.2013
comment
давайте продолжим это обсуждение в чате   -  person Frank    schedule 09.09.2013