2011-04-19 131 views
1

有人可以帮助并给出解决方案,比较两次,收到时格式如下:12:20 AM比较12小时格式的时间

我在我的脚本中有两个时间字段,这些字段是要在验证后存储在数据库中,但验证后格式的顺序是正确的,我想对这两个字段进行比较。

我想要做的比较是检查第二个字段是否与第一个字段不重叠。

例如:

第一变量命名为$timeStart,并保持= “05:30下午” 的时间值。

第二个名称为$timeEnd,值为=“4:00 PM”。

现在,我希望做一个比较,看看是否$ timeEnd是前$ timeStart (也将考虑AM/PM进行比较时)如果是我不想回应一个错误,否则继续与剧本。

我正在做一个事件脚本,所以时机必须正确:) $ timeEnd必须在$ timeStart之后。

我肯定不希望我解释还不够明确:(感谢 百忙之中阅读我的复杂废话:)

+0

你应该添加日期太...什么开始今天下午5点的时间和结束时间也是今天下午4点? – 2011-04-19 05:55:24

+0

大声笑,刚刚有一个想法 - 我将不得不将两次转换为MySQL格式比较这样? '$ timeStart =日期( “H:I:S” 的strtotime($ timeStart));' '$ timeEnd =日期( “H:I:S” 的strtotime($ timeEnd));' 这会起作用吗? – Zubair1 2011-04-19 05:58:02

+1

不,您需要将它们转换为**时间戳**。你不能有意义地比较字符串。 – deceze 2011-04-19 05:59:22

回答

2
if(function greaterDate($start_date,$end_date) 
{ 

    $start = strtotime($start_date); 
    $end = strtotime($end_date); 
     if ($start-$end > 0) 
     return 1; 
    else 
     return 0; 
} 
$time = greaterDate($start_date,$end_date)) 
+0

这似乎已经为我做了伎俩:)谢谢:) – Zubair1 2011-04-19 06:07:24

1
if (strtotime($timeEnd) < strtotime($timeStart)) { 
    // fail 
} 

才有意义,但如果你不打算允许交叉一天的时间,明显。

2

这应该有助于

function timediff($start, $end) 
{ 
     if($end >= $start) 
     { 
      return (round(($end-$start)/3600, 0))." Hrs ".((($end-$start)%3600)/60)." Min"; 
     } 
     return false; 
} 
echo timediff(strtotime('yesterday 5 pm'), strtotime('today 4:30 am')); 
+0

这也是一个很好的,谢谢! – Zubair1 2011-04-19 08:02:43

相关问题