2016-09-01 5 views
2

Итак, у меня есть магазин, который открывается в 1:00 ночи и закрывается в 22:00. В любое текущее время я просто хочу проверить, находится ли эта метка времени между временем открытия магазина и закрытия.Сравнение двух временных меток в php

Да, это очень просто, и все же я не знаю, почему, мне трудно. ниже кусок эпического дерьма я пытаюсь.

<?php 

$t=time(); //for current time 
$o = date("Y-m-d ",$t)."01:00:00"; //store open at this time 
$c = date("Y-m-d ",$t)."22:00:00"; //store closes at this time 

//Yes, its crazy .. but I love echoing variables 
echo "current time = ".$t; 
echo PHP_EOL; 
echo "Start = ".strtotime($o); 
echo PHP_EOL; 
echo "End = ".strtotime($c); 
echo PHP_EOL; 

// below condition runs well, $t is always greater than $o 
if($t>$o){ 
    echo "Open_c1"; 
}else{ 
    echo "Close_c1"; 
} 

//Here's where my variable $t, behaves like a little terrorist and proclaims itself greater than $c 
if($t<$c){ 
    echo "Open_c2"; 
}else{ 
    echo "Close_c2"; 
} 
?> 

ВЫВОД: на phpfiddle

текущее время = 1472765602 Start = 1472706000 End = 1472781600 Open_c1 Close_c2

Только одна помощь, почему ($ т < $ с) условие ложно. Я пропустил что-то очень распространенное или делаю серьезную ошибку.

спасибо.

+0

My bad .. я забыл преобразовать $ o & $ c в строку и сравнивал дату со строкой. – Sarge

ответ

2

Попробуйте вместо

$o = date("Y-m-d 01:00:00"); //store open at this time 
$c = date("Y-m-d 22:00:00"); //store closes at this time 
+0

Спасибо, человек, мой плохой .. я забыл преобразовать его в строку и сравнивал дату со строкой. – Sarge

2

Это потому, что $o и $c являются строка и $ т время(); Вы должны изменить свое сослагательное наклонение в

if ($t < strtotime($c)) 

и

if ($t > stttotime($o)) 

для того, чтобы работать должным образом.

+0

yeap Я получил это, Это ошибка с моей стороны. Спасибо, друг. – Sarge

Смежные вопросы