如果有人这么善良,我需要一些帮助。 我花了两天的时间试图制作一个脚本,告诉访问者技术支持在线状态。
办公时间为上午10点至下午18:30。 如果访问者在这个小时间隔内,很容易,该消息将“在线”。 如果他不在办公时间,我需要显示技术支持可用的剩余小时数,如果在周末或周五晚上,将显示另一条消息。
这是我的剧本,我不知道我错在哪里。 任何帮助赞赏。 感谢。
$date2 = date("l", time());
$date3 = strtolower($date2);
$now = (int) date('Hi');
$time1 = 1000;
$time2 = 1830;
$currentTime = time();
if (date("G") >= 19 || (date("G") == 18 && date("i") > 00)) {
$datetime1 = 10 * 3600 + strtotime("now") + (24 - date("G")) * 3600 +
(60 - date("i")) * 60;
} else {
$datetime1 = strtotime(date("Y-m-d") + " 10:00:00");
}
$interval = abs($datetime1 - $currentTime);
$hours = round($interval / 3600);
if (($date3 == "saturday") || ($date3 == "sunday")) {
$status = '<span style="color:#909090;">
OFFLINE. We\'ll be available on Monday morning.</span>';
} elseif ($date3 == "friday") {
if ($now > $time2) {
$status = '<span style="color:#909090;">
OFFLINE. We\'ll be available on Monday morning.</span>';
} elseif ($now < $time1) {
$status = '
<span style="color:#909090;">OFFLINE. We\'ll be online in about ' . $hours . ' hours. </span>';
} else {
$status = '<span style="color:#32a300;">ONLINE, solving customer issues. </span>';
}
} else {
if ($now > $time1 && $now < $time2) {
$status = '<span style="color:#32a300;">ONLINE, solving customer issues.</span>';
} else {
$status = '<span style="color:#909090;">OFFLINE. We\'ll be become online in about ' . $hours . ' hours.</span>';
}
}
echo $status;
答案 0 :(得分:4)
您是否考虑过使用DateTime
类重构代码?它与PHP 5.2+兼容,它通常是在PHP中处理日期的推荐方法。
$start_date = new \DateTime('today 10:00');
$end_date = new \DateTime('today 18:30');
$now = new \DateTime();
if ($now->format('N') >= 6) {
// weekend
}
if ($start_date <= $now && $now < $end_date) {
// office hours
} else {
// closing hours
}
以上示例更易于阅读/理解/调试,并且您可以省去自己手动执行所有计算和日期转换的麻烦。
Datetime
课程还允许您轻松计算2个日期之间的时差:
$opening_time = new \DateTime('tomorrow 10:00');
$now = new \DateTime();
$time_difference = $now->diff($opening_time);
$remaining_time = $time_difference->format('%h hours, %i minutes');
echo $remaining_time . ' until we will open.';
这应该输出类似“13小时15分钟,直到我们打开。”。