How to check if time is between two times in PHP

PhpTime

Php Problem Overview


I have following three strings (current time, sunset and sunrise), how can I find if the current time is between the sunrise and sunset?

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

Php Solutions


Solution 1 - Php

$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

Reference

Solution 2 - Php

i would recoment you to first "convert" the strings to integers using substr function and intval.

avter this step you should be able to simply compare the times.

( note that you should use 18:00 instead of 6:00 PM, this would be easyer to handl, therefor you could "detect" with substr if the time is AM or PM, and just add "12" to the number )

i'm pretty shure there are more elegant ways of doing this, but this should just give you an BASIC idea for a SIMPLE way for not advanced php developers.

hope it helps

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser966582View Question on Stackoverflow
Solution 1 - PhpJohn CondeView Answer on Stackoverflow
Solution 2 - PhpAceView Answer on Stackoverflow