web-dev-qa-db-ja.com

PHPで時刻が2回の間かどうかを確認する方法

次の3つの文字列(現在時刻、日没、日の出)がありますが、現在時刻が日の出と日没の間にあるかどうかを確認するにはどうすればよいですか?

$current_time = "10:59 pm";
$sunrise = "5:42 am";
$sunset = "6:26 pm";
57
user966582
$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';
}

実際の動作を参照

参照

72
John Conde

最初にsubstr関数とintvalを使用して文字列を整数に「変換」することをお勧めします。

このステップの後、時間を単純に比較できるはずです。

(6:00 PMの代わりに18:00を使用する必要があることに注意してください。これは、取り扱いが簡単になるため、時間がAMまたはPMの場合にsubstrで「検出」し、数字に「12」を追加するだけです)

これを行うためのよりエレガントな方法があることを私はかなり喜んでいますが、これはあなたに上級PHP開発者ではない単純な方法の基本的なアイデアを与えるだけです。

それが役に立てば幸い

2
Ace