How to check if time is between two times in PHP [

2019-01-06 13:12发布

问题:

This question already has an answer here:

  • How to calculate the difference between two dates using PHP? 32 answers

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";

Edit: I don't understand why I got so many down votes. I suppose this site is meant to ask question if you can't do something on your own.

I could not figure out how to convert the time to the numbers because of am/pm thats why I asked the question. I did not see any similar question so I asked.

回答1:

$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

  • DateTime


回答2:

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



标签: php time