我正在根据一些营业时间以 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 变量,而不是在任何时区硬编码值?
因此,你们感谢任何帮助和其他技术。谢谢。