簡體   English   中英

PHP,如果特定的工作日是星期幾和時間回顯

[英]PHP if specific business day of week and time echo

如果時間在上午8:15和下午5:30之間,則以下代碼可用於回顯“打開”或“關閉”。 我正在嘗試使其具體到一天。 我如何將格式字符'D'合並為例,星期一時間8:15 am-5:30 pm .. echo“ Open”,星期六時間8:15 am-1:00 pm“ Open”。 我希望能夠按日期和時間控制打開/關閉的回聲。

當前工作代碼僅適用於幾個小時

<?php
date_default_timezone_set('America/New_York');
$hour = (int) date('Hi');
$open = "yah hoo, we are open";
$closed = "by golly, im closed";

if ($hour >= 0815 && $hour <=1735) {
// between 8:15am and 5:35pm
echo "$open";
} else {
echo "$closed";
}
?>

我正在嘗試做的事的例子:

$hour = (int) date('D Hi');
if ($hours >= 0815 && $hour <=1735 && $hour === 'Mon')
{ echo "$open"; }
else { echo "$closed"; }
if ($hours >= 0815 && $hour <=1300 && $hour === 'Sat')
{ echo "$open"; }
else { echo "$closed"; }

每個唯一答案的另一個例子看起來很接近我在尋找什么,但這也不起作用

<?php
$openDaysArray = array('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat','Sun');

$thisDate = date('D Hi');

$explode = explode(" ", $thisDate);
$day = $explode[0];
$time = $explode[1];

if (in_array($day, $openDaysArray)) 
if ($time < 815 || $time > 1730 && $day === 'Mon');
if ($time < 815 || $time > 1730 && $day === 'Tue');
if ($time < 815 || $time > 1730 && $day === 'Wed');
if ($time < 815 || $time > 1730 && $day === 'Thu');
if ($time < 815 || $time > 1730 && $day === 'Fri');
if ($time < 815 || $time > 1730 && $day === 'Sat');
if ($time < 815 || $time > 1730 && $day === 'Sun');
{echo 'Open';}
else {echo 'Closed';}
?>

使用switch語句:

$thisDate = date('D Hi');

$hoursOfOpArray = array("Mon_Open" => "815", "Mon_Close" => "1730", "Tue_Open" => "815", "Tue_Close" => "1730"); //repeat for all days too fill this array

$explode = explode(" ", $thisDate);
$day = $explode[0];
$time = (int)$explode[1];

switch($day) {
    case "Sun":
        $status = "Closed";
    break;
    case "Mon":
        $status = ($time < $hoursOfOpArray[$day . "_Open"] || $time > $hoursOfOpArray[$day . "_Close"]) ? "Closed" : "Open";
    break;
    //same as Monday case for all other days
}

echo $status;

這也應該起作用:

echo ($day === 'Sun' || ($time < $hoursOfOpArray[$day . "_Open"]) || ($time > $hoursOfOpArray[$day . "_Close"])) ? "Closed" : "Open";

我會這樣處理。 設置所有開放時間的數組。 如果您知道周六和周日不營業,那么實際上就無需繼續檢查時間,因此請首先在該處終止該過程。 然后只需找出星期幾,在$hours數組中查找相應的打開和關閉時間,創建實際的DateTime對象進行比較(而不是整數)即可。 然后只返回適當的消息。

function getStatus() {

    $hours = array(
        'Mon' => ['open'=>'08:15', 'close'=>'17:35'],
        'Tue' => ['open'=>'08:15', 'close'=>'17:35'],
        'Wed' => ['open'=>'08:15', 'close'=>'17:35'],
        'Thu' => ['open'=>'08:15', 'close'=>'22:35'],
        'Fri' => ['open'=>'08:15', 'close'=>'17:35']
    );

    $now = new DateTime();
    $day = date("D");

    if ($day == "Sat" || $day == "Sun") {
        return "Sorry we're closed on weekends'.";
    }

    $openingTime = new DateTime();
    $closingTime = new DateTime();

    $oArray = explode(":",$hours[$day]['open']);
    $cArray = explode(":",$hours[$day]['close']);

    $openingTime->setTime($oArray[0],$oArray[1]);
    $closingTime->setTime($cArray[0],$cArray[1]);

    if ($now >= $openingTime && $now < $closingTime) {
        return "Hey We're Open!";
    }

    return "Sorry folks, park's closed. The moose out front should have told ya.";
}

echo getStatus();

這一項起作用,並添加了備注以盡可能地解釋。

<?php

date_default_timezone_set('America/New_York');

// Runs the function
echo time_str();

function time_str() {

    if(IsHoliday())
    {
        return ClosedHoliday();
    }           

$dow = date('D'); // Your "now" parameter is implied

    // Time in HHMM
    $hm = (int)date("Gi");

    switch(strtolower($dow)){
            case 'mon': //MONDAY adjust hours - can adjust for lunch if needed
                if ($hm >=    0 && $hm <  830) return Closed();
                if ($hm >= 830 && $hm < 1200) return Open();
                if ($hm >= 1200 && $hm < 1300) return Lunch();
                if ($hm >= 1300 && $hm < 1730) return Open();
                if ($hm >= 1730 && $hm < 2359) return Closed();
                break;
            case 'tue': //TUESDAY adjust hours
                if ($hm >= 830 && $hm < 1730) return Open();
                else return Closed();
                break;              
            case 'wed': //WEDNESDAY adjust hours
                if ($hm >= 830 && $hm < 1730) return Open();
                else return Closed();
                break;              
            case 'thu': //THURSDAY adjust hours
                if ($hm >= 830 && $hm < 1730) return Open();
                else return Closed();
                break;              
            case 'fri': //FRIDAY adjust hours
                if ($hm >= 830 && $hm < 1730) return Open();
                else return Closed();
                break;              
            case 'sat': //Saturday adjust hours
                return Closed();
                break;              
            case 'sun': //Saturday adjust hours
                return Closed();
                break;              

    }           
}

// List of holidays
function HolidayList()
{
// Format: 2009/05/11 (year/month/day comma seperated for days)
return array("2016/11/24","2016/12/25");
}

// Function to check if today is a holiday
function IsHoliday()
{
// Retrieves the list of holidays
$holidayList = HolidayList();
// Checks if the date is in the holidaylist  - remove Y/ if Holidays are same day each year  
if(in_array(date("Y/m/d"),$holidayList))
{ 
    return true;
}else
{
    return false;
}   
}

// Returns the data when open
function Open()
{
    return 'Yes we are Open';
}

// Return the data when closed
function Closed()
{
    return 'Sorry We are Closed';
}   

// Returns the data when closed due to holiday
function ClosedHoliday()
{
    return 'Closed for the Holiday';
}

// Returns if closed for lunch
// if not using hours like Monday - remove all this
// and make 'mon' case hours look like 'tue' case hours
function Lunch()
{
    return 'Closed for Lunch';
}

?>
$o = ['Mon' => [815, 1735], /*and all other days*/'Sat' => [815, 1300]];
echo (date('Hi')>=$o[date('D')][0] && date('Hi')<=$o[date('D')][1]) ? "open": "closed";

做完了! 不要問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM