2013-04-09 98 views
37

我有以下三個字符串(當前時間,日落和日出),如何查看當前時間是否在日出和日落之間?如何檢查時間是否在PHP之間的兩次

$current_time = "10:59 pm"; 
$sunrise = "5:42 am"; 
$sunset = "6:26 pm"; 

編輯:我不明白爲什麼我得到這麼多的反對票。我想這個網站是要問你是否不能自己做點什麼。

我想不出如何將時間轉換爲數字,因爲am/pm這就是爲什麼我問這個問題。我沒有看到任何類似的問題,所以我問。

+0

看看DateTime類,如果上述不幫助你,OP。 – phpisuber01 2013-04-09 19:57:10

+8

我認爲這是不公平的。鏈接的其他答案嚴格處理日期。我認爲只要任何問題達到-1,人們就會「順其自然」。 – Evert 2013-04-09 19:58:00

+1

@WebnetMobile我認爲比較日期有點不同,然後比較一天。 – Ace 2013-04-09 19:58:31

回答

56
$current_time = "4:59 pm"; 
$sunrise = "5:42 am"; 
$sunset = "6:26 pm"; 
$date1 = DateTime::createFromFormat('H:i a', $current_time); 
$date2 = DateTime::createFromFormat('H:i a', $sunrise); 
$date3 = DateTime::createFromFormat('H:i a', $sunset); 
if ($date1 > $date2 && $date1 < $date3) 
{ 
    echo 'here'; 
} 

See it in action

參考

+0

注意到他沒有處理Date值,你是否確定這隻適用於白天?,我認爲DateTime函數正在處理核心函數中的unix時間戳。 如果date3是=第15日 - 下午6點,這將是錯誤的=第17日 - 下午4點 Ace 2013-04-09 20:07:04

+0

請corect我,如果我錯了,我沒有嘗試功能 – Ace 2013-04-09 20:10:37

+0

檢查出我設置的小提琴。它顯示它正在工作。 – 2013-04-09 20:13:29

2

我會recoment您先 「轉換」 的字符串用SUBSTR功能和INTVAL整數。

avter這一步,你應該能夠簡單地比較時間。 (請注意,您應該使用18:00而不是6:00 PM,這樣可以輕鬆處理,因此如果時間是AM或PM,您可以使用substr「檢測」,並且只需將「12」添加到數字)

我很舒服有這樣做的更優雅的方式,但這應該只是給你一個簡單的方法,爲不先進的PHP開發人員的基本思想。

希望它有幫助

+2

strtotime()會比substr()更好, – CrabLab 2016-09-26 13:12:18

相關問題