Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Porównywanie dat - błędy
Forum PHP.pl > Forum > PHP
kondix03
Ostatnio potrzebne mi było napisać funkcję która porównuje 2 kompletne daty (data + godzina) i sprawdza różnicę między nimi. Użyłem funkcji mktime jednak funkcja nie działała tak jak chciałem.
Funkcja:
  1. function returnTime($date1, $date2, $hour1, $hour2, $check)
  2. {
  3. $hour1e = explode(':', $hour1);
  4. $date1e = explode('-', $date1);
  5. $mk1 = mktime($hour1e[0], $hour1e[1], $hour1e[2], $date1e[1], $date1e[2], $date1e[0]);
  6. $hour2e = explode(':', $hour2);
  7. $date2e = explode('-', $date2);
  8. $mk2 = mktime($hour2e[0], $hour2e[1], $hour2e[2], $date2e[1], $date2e[2], $date2e[0]);
  9. $roz = $mk1 - $mk2;
  10. if($roz >= $check){
  11. return 0;
  12. }
  13. else{
  14. $return = $check - $roz;
  15. return $return;
  16. }
  17. }

Wywołanie:
  1. $podroz = mysql_fetch_assoc(mysql_query("SELECT * FROM podroz WHERE owner = ".$player -> id));
  2. $date = $podroz['date'];
  3. $hour = $podroz['hour'];
  4. $duration = $podroz['duration'];
  5. $date_now = date("Y-m-s");
  6. $hour_now = date("H-i-s");
  7. $czas = returnTime($date_now, $date, $hour_now, $hour, $duration);
thek
Bo użyć strtotime było za trudno wink.gif
kondix03
Kurde, coś mi nie wychodzi... Użyłem tej funkcji ale nadal zwraca 0. Albo jestem ułomny albo nie rozumiem jak ona działa.
Funkcja:
  1. function returnTime($date1, $hour1, $check){
  2. $hour1e = explode(':', $hour1);
  3. $date1e = explode('-', $date1);
  4. $mk1 = mktime($hour1e[0], $hour1e[1], $hour1e[2], $date1e[1], $date1e[2], $date1e[0]);
  5. $strto = strtotime('-'.$check.' seconds');
  6. if($mk1 >= $strto){
  7. return 0;
  8. }
  9. else{
  10. $roz = $strto - $mk1;
  11. return $roz;
  12. }
  13. }
Wywołanie:
  1. $podroz = mysql_fetch_assoc(mysql_query("SELECT * FROM podroz WHERE owner = ".$player -> id));
  2. $date = $podroz['date'];
  3. $hour = $podroz['hour'];
  4. $duration = $podroz['duration'];
  5. $czas = returnTime($date, $hour, $duration);

Jak ktoś by wytłumaczył mi jak użyć tej funkcji to byłbym wdzięczny smile.gif

EDIT
Coś tam popróbowałem jednak coś mi nie chce przekazywać pól z bazy czy coś w tym stylu :/
Piogola
  1. $czas = strtotime($date.' '.$hour.' -'.$check.' seconds');
  2. if($czas < 0) $czas=0;
thek
Po chu... steczkę rozbijasz datę i czas?
  1. $bazowy = strtotime( $date1.' '.$hour1 );
  2. $inny = strtotime( $date2.' '.$hour2 );

Obie zmienne to będzie timestamp. No chyba że spaprałeś to jakimś dziwnym formatem czasu lub daty wink.gif

Różnicę chyba umiesz policzyć :/ Podstawowe umiejętności korzystania z manuala się kłaniają jednak...
kondix03
Dobra działa, jakoś po chińsku ten kod napisałem, zero ładu i składu. Teraz już wszystko działa, wielkie dzięki za pomoc, do zamknięcia.
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.