Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] jak sprawdzić czy aktalny czas jest w zakresie pomiędzy start i stop ?
kwaq
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 28.03.2016

Ostrzeżenie: (0%)
-----


]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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
mariolita
post
Post #2





Grupa: Zarejestrowani
Postów: 116
Pomógł: 10
Dołączył: 24.04.2015

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
kwaq
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 28.03.2016

Ostrzeżenie: (0%)
-----


Dzięki za pomoc (IMG:style_emoticons/default/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.  
Go to the top of the page
+Quote Post
Johnas
post
Post #4





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/tongue.gif)

Ten post edytował GodOfPeople 28.03.2016, 21:14:52
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.09.2025 - 08:20