Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] jak sprawdzić czy aktalny czas jest w zakresie pomiędzy start i stop ?
Forum PHP.pl > Forum > Przedszkole
kwaq
]Witam.

W bazie danych mam zapisane start i stop w formacie 00:00:00
Jak sprawdzić czy aktualny czas jest w zakresie pomiędzy start i stop , z uwzględnieniem że może być wpisane np start =18:15:00 stop =12:20:00

Pozdrawiam
mariolita
  1.  
  2. <?php
  3.  
  4. date_default_timezone_set('Europe/Warsaw');
  5.  
  6. $start = strtotime("12:04:55");
  7.  
  8. $stop = strtotime("17:14:04");
  9.  
  10. $teraz = strtotime(date("H:i:s"));
  11.  
  12. function sprawdzZakres($teraz,$start,$stop){
  13.  
  14. return ($start<$teraz && $teraz<$stop);
  15.  
  16. }
  17.  
  18. if (sprawdzZakres($teraz,$start,$stop)) {
  19.  
  20. echo "Atkualny czas mieści się w przedziale";
  21.  
  22. } else {
  23.  
  24. echo "Atkualny czas nie mieści się w przedziale";
  25.  
  26. }
  27.  



Wyciąsz start i konwertujesz do sekund, wyciągasz stop i konwertujesz do sekund i aktualny czas wyciągasz do sekund a następnie spawdzasz czy aktualny czas mieści się między start i stop
kwaq
Dzięki za pomoc smile.gif


Niestety skrypt nie brał pod uwagę jeśli $start był np 20:00:00 a stop 12:00:00

Prawidłowo powinno być tak:

  1. date_default_timezone_set('Europe/Warsaw');
  2.  
  3. $start = strtotime("12:04:55");
  4.  
  5. $stop = strtotime("22:14:04");
  6.  
  7. $teraz = strtotime(date("H:i:s"));
  8. function sprawdzZakres($teraz,$start,$stop){
  9. if ( $start < $stop ){
  10. return ($start<$teraz && $teraz<$stop);
  11. }elseif ($stop < $start ){
  12. return ($start<$teraz || $stop > $teraz );
  13. }
  14. }
  15.  
  16. if (sprawdzZakres($teraz,$start,$stop)) {
  17.  
  18. echo "Atkualny czas mie�ci si� w przedzial\n";
  19.  
  20. } else {
  21.  
  22. echo "Atkualny czas nie mie�ci si� w przedziale\n";.
  23.  
  24. }
  25.  
Johnas
Prawidłowo powinien czas być rozłożony na czas unixowy (w sekundach od 1970 roku) co by sprawiło że skrypt nie miał by problemu sprawdzić nawet miesięcznego okresu dla danej daty smile.gif ale w sumie też nie wiadomo do jakich zastosowań zamierzasz tego używać... jeżeli chcesz sprawdzać każdego dnia tą godzinę to jest dobrze, a jeżeli chcesz sprawdzać czy dane konto ma mieć premium w danym momencie to jest źle tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.