У меня есть три строки (текущее время, закат и восход солнца), как я могу узнать, находится ли текущее время между восходом и закатом?
$current_time = "10:59 pm"; $sunrise = "5:42 am"; $sunset = "6:26 pm";
Редактировать: Я не понимаю, почему у меня так много голосов. Я предполагаю, что этот сайт должен задать вопрос, если вы не можете что-то сделать самостоятельно.
Я не мог понять, как преобразовать время в номера из-за am / pm, поэтому я задал вопрос. Я не видел подобного вопроса, поэтому я спросил.
$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'; }
Смотрите это в действии
Справка
я бы рекомендовал вам сначала «преобразовать» строки в целые числа, используя функцию substr и intval.
Пройдите этот шаг, чтобы вы могли просто сравнить время.
(обратите внимание, что вы должны использовать 18:00 вместо 6:00 PM, это было бы легче сменить, поэтому вы могли бы «обнаружить» с помощью substr, если время AM или PM, и просто добавить «12» к числу)
я довольно уверен, что есть более элегантные способы сделать это, но это должно просто дать вам ОСНОВНУЮ идею для ПРОСТОГО способа для непередовых разработчиков php.
Надеюсь, поможет