web-dev-qa-db-fra.com

Comment vérifier si le temps est compris entre deux fois dans PHP

J'ai trois chaînes suivantes (heure actuelle, le coucher du soleil et le lever du soleil). Comment puis-je savoir si l'heure actuelle se situe entre le lever et le coucher du soleil?

$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';
}

Voir en action

Référence

72
John Conde

je vous recommanderais tout d’abord de "convertir" les chaînes en entiers en utilisant la fonction substr et intval.

après cette étape, vous devriez pouvoir comparer simplement les temps.

(notez que vous devriez utiliser 18:00 au lieu de 18:00, cela serait plus facile à manipuler, vous pouvez donc "détecter" avec substr si le temps est AM ou PM, et juste ajouter "12" au nombre)

je suis assez sûr qu'il existe des moyens plus élégants de le faire, mais cela devrait simplement vous donner une idée de base pour un moyen simple pour les développeurs php non avancés.

j'espère que ça aide

2
Ace