0

我正在根据一些营业时间以 30 分钟的差异打印时间段来选择在线预约的开始时间。

我被困在一个问题上,这里简要解释一下:

营业时间(开始-结束) = 10:00am - 5:00pm

插槽设置: 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 - 下午 4:30

我使用核心$UserTimeZoneIdentifire时区标识符变量获取当前服务器时区时间,并根据当前服务器时区运行时间禁用所有过去的时间。

$UserTimeZoneIdentifire = "America/Denver";

例如:

如果客户“ ABC ”当前时区时间为:下午 12:33 ,则上午 10点至下午 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 变量,而不是在任何时区硬编码值?

因此,你们感谢任何帮助和其他技术。谢谢。

4

0 回答 0