2013-04-09 15 views
37

Mam następujące trzy ciągi (aktualny czas, zachód i wschód), jak mogę znaleźć, jeśli aktualny czas jest pomiędzy wschodem a zachodem słońca?Jak sprawdzić, czy czas jest między dwa razy w PHP

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

Edytuj: Nie rozumiem, dlaczego mam tak wiele głosów w dół. Przypuszczam, że ta strona ma na celu zadać pytanie, czy nie możesz zrobić czegoś samemu.

Nie mogłem wymyślić, jak przekonwertować czas na liczby ze względu na am/pm to dlatego zadałem pytanie. Nie widziałem żadnego podobnego pytania, więc zapytałem.

+0

Spójrz na klasy DateTime jeśli powyższe nie robi pomóc, OP. – phpisuber01

+8

Nie sądzę, że to sprawiedliwe, aby zgodzić się z tym pytaniem. Połączona inna odpowiedź ściśle dotyczy dat. Myślę, że ludzie po prostu "idą z prądem", gdy tylko jakieś pytanie trafi -1. – Evert

+1

@WebnetMobile Myślę, że porównywanie dat jest nieco inne niż porównywanie dziennych porach. – Ace

Odpowiedz

56
$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

referencyjny

+0

Zauważ, że nie ma do czynienia z wartościami daty, czy chcesz, że działa to tylko w ciągu dnia? Myślę, że funkcja DateTime ma do czynienia z uniksowym znacznikiem czasowym w funkcji rdzenia. jeśli date3 to = dzień 15-18, to będzie to fałsz = dzień 17 - 4 po południu Ace

+0

proszę mnie poprawić, jeśli się mylę, nie wypróbowałem funkcji – Ace

+0

Sprawdź skrzypce i skonfiguruj. Pokazuje, że działa. –

2

chciałbym recoment do pierwszej "przerobić" struny do liczb całkowitych przy użyciu funkcji substr i intval.

Krok ten powinien być w stanie po prostu porównać czasy.

(pamiętaj, że powinieneś użyć 18:00 zamiast 18:00, to byłoby łatwiejsze w obsłudze, abyś mógł "wykryć" z substr, jeśli jest to AM lub PM, i po prostu dodać "12" do numer)

Jestem całkiem shure są bardziej eleganckie sposoby robienia tego, ale to powinno dać ci PODSTAWOWY pomysł na PROSTY sposób dla nie zaawansowanych programistów php.

nadzieję, że pomoże

+2

strtotime() byłoby lepsze niż substr() – CrabLab

Powiązane problemy