Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]zmiana systemu dnia z 24 na 16 godzinny.
Forum PHP.pl > Forum > Przedszkole
neo1986kk
Witam, mam plan produkcji, chodzi o to że zaklad nie pracuje na 3 zmiany i kiedy czas produkcji przekracza godzinę 22:00 powinno przeskawiać na 6:00. Czyli początek o godzinie 21:00 coś ma trwać 2 godziny więc skończy sie o 7:00 następnego dnia. Czy ktoś z was zna ten problem, jak można to rozwiąząć?
Pozdrawiam.
thomson89
Nie rozumiem cię trochę...
  1. $godzina = date('H');
  2.  
  3. switch($godzina)
  4. case '22':
  5. echo '6'; break;
  6. case '23':
  7. echo '7'; break;
  8.  
  9. //itp
neo1986kk
no tak ale to się dzieje automatycznie i są daty, godziny i minuty. W ten sposób kod byłby nie skończony, po drugie on musi przechodzic nie na 7:00 tylko na 7:00 kolejnego dnia.
vokiel
Miałem podobny problem tworząc swoją listę obecności.

Musisz zrobić tu kilka obliczeń w skrypcie. W momencie kiedy jest tworzony ten plan produkcji musisz wyliczyć czy i o ile przekroczy krańcową godzinę. Zapisać do bazy to przed, następnie resztę zapisać od godziny startowej następnego dnia (oczywiście należy pamiętać o zmianie daty)
celbarowicz
Podaję przykład jak można to zrobić. Kod jest rozwlekły, aby można samemu dostosować go do własnych potrzeb.Po wyrzuceniu rzeczy niepotrzebnych i przerobieni go zostanie tylko kilka linijek.


  1.  
  2. $obecna_data_i_godzina=date("Y-m-d H:i:s",time());
  3.  
  4.  
  5. echo $obecna_data_i_godzina; echo '<br>';
  6. echo 'obecna data='; echo $obecna_data = date("Y-m-d");echo '<br>';
  7. echo 'obecna godzina='; echo $obecna_godzina = date("H:i:s");echo '<br>';
  8. $godzina_do_zapisu=strtotime($obecna_godzina);
  9. $data_do_zapisu= $obecna_data ;
  10. $godzina22_00_00="22:00:00"; $godzina06_00_00="06:00:00";
  11.  
  12. echo 'granica_gorna='; echo $granica_gorna=strtotime($godzina22_00_00); echo '<br>';
  13. echo 'granica_dolna='; echo $granica_dolna=strtotime($godzina06_00_00); echo '<br>';
  14. echo 'obecna_godzina_inaczej='; echo $obecna_godzina_inaczej=strtotime($obecna_godzina); echo '<br>';
  15.  
  16. if($obecna_godzina_inaczej>$granica_gorna){ $godzina_do_zapisu=$obecna_godzina_inaczej-16*60*60;
  17. $data_do_zapisu=date("Y-m-d", (strtotime($obecna_data)+60*60*24)) ;
  18. }else{}
  19.  
  20. if($obecna_godzina_inaczej<$granica_dolna){ $godzina_do_zapisu=$obecna_godzina_inaczej+6*60*60;
  21. $data_do_zapisu=date("Y-m-d", (strtotime($obecna_data)+60*60*24)) ;
  22. }else{}
  23.  
  24. $godzina_zapis=date("H:i:s",$godzina_do_zapisu);
  25. echo '----------------------wynik-------------------------';echo '<br>';
  26. echo 'godzina_zapis=';echo $godzina_zapis; echo '<br>';
  27. echo 'data_zapis=';echo $data_do_zapisu; echo '<br>';
  28.  

testować zmieniając datę i czs w systemie.
pozdrawiam/ celbarowicz

poprawka
  1. if($obecna_godzina_inaczej<$granica_dolna){ $godzina_do_zapisu=$obecna_godzina_inaczej+6*60*60;
  2. $data_do_zapisu=date("Y-m-d", (strtotime($obecna_data))) ;
  3. }else{}
neo1986kk
A jak zapisać to w postaci jednej zmiennej?

to znaczy w postaci $data_do_zapisu = rrrr-mm-dd gg:mm
celbarowicz
  1. // bez sekund --- cią dalszy----tak jak sobie życzysz--- dodaj na końcu
  2. echo 'daj znać czy o to chodziło--uprość ten skrypt';echo '<br>';
  3. $twoj_zapis=date("Y-m-d H:i",time(strtotime($data_do_zapisu)+strtotime($godzina_zapis)));
  4.  
  5. echo $twoj_zapis;
  6.  


neo1986kk
tak dokładnie o to mi chodziło, tylko mam problem z dodawaniem kilku dni, bo np jak cos sie zaczyna 2009-01-01 20:00 a czas trwania to 3 dni to niby sie konczy o 2009-01-03 20:00, a przecież powinno 2009-01-03 20:00 + 3*8godzin
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.