2016-02-12 76 views
0

我想找到的邏輯,如果當前時間與此時間範圍內躺在那麼我的店是開放的,否則它是關閉 我是能夠弄清楚的解決方案,但邏輯是不正確的,當我考慮分鐘 唯一小時邏輯是如何檢查當前時間是在開店和關閉時間之間的店鋪

$time= "11:00 22:30"; //time interval 
$var=explode(" ",$time); 
$currenttime=date("22:00"); // currenttime 
$opentime =$var[0]; 
$closetime=$var[1]; 

if($opentime - $currenttime < 0 && $currenttime - $closetime < 0)  
{ 
    echo "open"; 
} 
else 
{ 
echo "close"; 
} 

此代碼的工作很好,當我把當前時間作爲10,24,9,但是當我考慮爲22.30或11.30沒有給出正確的結果,請爲此建議我正確的解決方案..在此先感謝

+2

你覺得'日期( 「22:0」)'是好? – deceze

+0

我們需要檢查的當前時間 – techandroid07

+0

是的,但是......日期(「22:00」)返回......「22:00」......這是......沒有意義的。 – deceze

回答

0

我建議t使用Unix時間戳。下面的scetch應該指向正確的方向。

$unixStart = mktime(11, 0, 0, date('n'), date('j')); 
$unixEnd = mktime(22, 30, 0, date('n'), date('j')); 

$unixNow = time(); 
if (($unixNow >= $unixStart) && ($unixNow <= $unixEnd)) 
{ 
    echo "open"; 
} 
else 
{ 
    echo "closed"; 
} 

請確保您所說的「date_default_timezone_set」和/或使用日期時間/ DateTimeZone類以獲得正確的時區。下面
的示例使用 「美國/芝加哥」,設置所需的時區,而不是

$objDTZ = timezone_open("America/Chicago"); 
$objDate = new DateTime('now'); 
$unixNow=time(); 
$objDate->setTimestamp($unixNow); 
$objDate->setTimezone($objDTZ); 

然後

$unixStart = mktime(11,0,0,$objDate->format('n'),$objDate->format('j')); 
$unixEnd = mktime(22,30,0,$objDate->format('n'),$objDate->format('j')); 

謝謝
湯姆

+0

Mockrat dekuje,Pane Martin! –

0

我覺得像的爆炸字符串在這裏有點不必要。 這是一個解決方案。

<?php 

$openingTime = '1100'; 
$closingTime = '2230'; 
$currentTime = date("Hi"); // Current time 

if($currentTime < $openingTime || $currentTime > $closingTime) { 
    echo 'Shop is closed.'; 
} else { 
    echo 'Shop is open.'; 
} 

此外,不要忘記使用date_default_timezone_set()設置默認值。 瞭解更多關於它here

0

可愛的一行;-)

echo (date("Hi") > 1100 && date("Hi") < 2230) ? 'Open' : 'Closed';  
+0

$ opentime = strtotime(「11:00」); $ closetime = strtotime(「22:00」); $ currenttime = strtotime(date(「H:i」)); ($ opentime - $ currenttime <0 && $ currenttime - $ closetime <0) {$ shop =「open」;} else {$ shop =「close」; }這個解決方案對我的支持感謝 – techandroid07

相關問題