2011-04-19 170 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

相關問題