2014-10-08 46 views
-1

我必须将时间与存储在变量中的时间值进行比较。我设计了逻辑,但它在时间上失败了。如何使用php比较两次

以下是逻辑:

$diff = "22:32:53"; 

if ($diff > strtotime("072:00:00")) 
{ 
    echo "DO A"; 
} 
else if ($diff < strtotime("08:00:00")) 
{ 
    echo "DO B"; 
} 
else if($diff > strtotime("08:00:00") && $diff < strtotime("072:00:00")) 
{ 
    echo "DO C"; 
} 

但它呼应 “DO A” 而它应该显示 “DO C”。无法弄清楚我在哪里丢失的逻辑提前

感谢。

+2

strtotime将有效的日期字符串转换为时间戳。 strtotime(“072:00:00”)返回false。 – cjs1978 2014-10-08 12:54:00

回答

0

如果要比较的时间(无日期),最好的办法是手动将其转换成秒,并比较秒。 strtotime可能有效,但在比较之前,您还需要在$diff上运行它。

+0

不,它没有工作 – user3305327 2014-10-08 12:56:27

+0

什么没有?将数字转换为秒并在之后进行比较?我对此表示怀疑。 – blue112 2014-10-08 12:57:02

+0

如果(的strtotime($ DIFF)>的strtotime( “072:00:00”)) { 回波$ B。 “现有剧本”; } else if(strtotime($ diff) strtotime(“08:00:00”)&& strtotime($ diff) user3305327 2014-10-08 12:57:46

0

第一件事,$ DIFF是一个字符串不是一个int,它应该是:

$diff = strtotime("22:32:53"); 

比较通常使用DateTime::diff

做的比较无论如何都不会工作,因为如果你检查

var_dump(strtotime("072:00:00")); 

将返回:

false 

的strtotime尝试匹配与已知的时间格式的格式,72是不是有效的小时。