Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] date()
Forum PHP.pl > Forum > PHP
lukasl89
witam! Czy istnieje możliwość zaokrąglenia pobranego przez php czasu? Chciałbym aby np czas pobrany o godzinie 21:51 był zapisany do mysqla jako 21:50

Z góry dzięki za odpowiedzi, pozdrawiam;)
Mlodycompany
jak ja bym to robil to bym podzieli date na godziny i minuty i potem zrobil reszte z dzielenia przez 10 i od minut odjac ta reszte, ale pewnie znajac mozliwosci php jest jakas inna funkcja biggrin.gif
krzmig
  1. <?php
  2. date( "G:" ).round( date( "i" ), -);
  3. ?>
styx
istnieje taka możliwośc jeżeli naskrobiesz odrobine kodu z paroma ifami

@krzmig
  1. <?php
  2. date( "G:" ).round( date( "i" ), -);
  3. ?>

tak nie rób bo powstanie Ci godzina np. 14:60,
ale kod jest ok brakuje dwóch ifów na liczbę 60 i na godzinę 24.00
krzmig
Racja... mój błąd, może być godzina 21:60 ale 24:00 raczej się nie zdarzy ;P Wydaje mi się że teraz będzie dobrze, ale proponuję jeszcze sprawdzić ;]

  1. <?php
  2. $minuty = date( "i" );
  3. if( $minuty >= 55 )
  4. {
  5. $data = date( "G" ) + 1;
  6. if( $data == 24 )
  7. {
  8. $data = 0;
  9. }
  10. $data .= ':00';
  11. }
  12. else if( $minuty < 5 )
  13. {
  14. $data = date( "G:00" );
  15. }
  16. else
  17. {
  18. $data = date( "G:" ).round( $minuty, -);
  19. }
  20. ?>
Mlodycompany
mi się wydaje że podane skrypty też są złe bo są dostosowane gdzie minuty będą z 11 czyli 1, 11, 21 itp. Jak będzię np. 20 to poda że jest 19 po? 
decha-design
a ja powiem tak ... użyj funkcji explode() do rozbicia daty podaniej jako G:i czy jak tam sobie chcesz, a póżniej użyj na odpowiednim kawałku tablicy odpowiednich funkcji ...

floor() - zaokrągla ułamki w dół
ceil() - zaokrągla ułamki w górę
Kicok
Cytat
a ja powiem tak ... użyj funkcji explode() do rozbicia daty podaniej jako G:i czy jak tam sobie chcesz, a póżniej użyj na odpowiednim kawałku tablicy odpowiednich funkcji ...

floor() - zaokrągla ułamki w dół


A nawet nie trzeba tego rozbijać. Można też operować na timestampie:
  1. <?php
  2.  
  3. $timestamp = floor( ( $timestamp + 300 ) / 600 ) * 600;
  4.  
  5. ?>

600 = 10 min
300 = 5 min
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.