2013-04-09 14 views
37

現在の時間、日の出、日の出の3つの文字列がありますが、現在の時刻が日の出と日没の間にある場合はどうすれば見つけることができますか?PHPで時間が2回あるかどうかを確認する方法

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

編集:なぜ私は多くの投票を得たのか分かりません。私はこのサイトがあなた自身で何かできないかどうか質問することを意図していると思います。

am/pmという理由で時間を数字に変換する方法がわかりませんでした。私は似たような質問はしませんでしたので、私は尋ねました。

+0

は、OPをDateTimeのクラスを見てみましょうことができます願っています。 – phpisuber01

+8

私はこの質問をd​​ownvoteするのは公正だとは思わない。リンクされた他の答えは厳密に日付を扱う。私は人々がちょうど質問が-1に達するとすぐに「流れに乗る」と思う。 – Evert

+1

@WebnetMobile私は、日付を比較するのはちょっと違って、昼間を比較していると思います。 – Ace

答えて

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時の場合、これはfalseとなります。=日17-午後 Ace

+0

私が間違っている場合は私にcorectしてください。私は関数を試してみませんでした。 – Ace

+0

私が設定したフィドルをチェックしてください。それは働いていることを示している。 –

2

私が最初にSUBSTR関数とINTVALを使用して整数に文字列を "変換" することができrecomentでしょう。

この手順を実行すると、時間を簡単に比較できるはずです。

(午後6時の代わりに18:00を使用する必要があることに注意してください。これはハンドリングが簡単なため、時間がAMまたはPMの場合はsubstrで「検出」でき、数)

これはより洗練された方法ですが、これは高度なPHP開発者ではない単純な方法の基本的な考え方を与えるだけです。

は、それが上記のdoesntのヘルプあなた場合

+2

strtotime()はsubstr()よりも優れています – CrabLab

関連する問題