Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Blad w mktime() ?
Forum PHP.pl > Forum > Przedszkole
barts
Witam,

staram sie napisac prosty skrypt do obliczania roznicy miedzy 2 datami.

  1. <?
  2. $d = mktime(0,0,0,7,1,2007);
  3. $d2 = mktime(0,0,0,date("m"),date("d"),date("Y"));
  4. $w = $d - $d2;
  5. echo date("d-m-Y", $w);
  6. ?>


Wynik dzialania skryptu: 05-03-1970. Liczba miesiecy sie zgadza ale dni juz nie. Dzisiaj mamy 29 kwietnia, czyli wynik powinien byc 02-03-rok.
Skad ta roznica i jak ja naprawic?
Wynik dzialania tego:
  1. <?php
  2. echo date("d-m-Y", mktime(0,0,0,7-date("m"),1-date("d"),2007-date("Y")));
  3. ?>

jest taki: 01-02-2000

Jak zrobic zeby obliczona data byla poprawna?
aurox
spróbuj

strtotime("2007-01-01") -> też uzyskasz unixowy znacznik czasu. (data jest przypadkowa).
barts
Ale co za roznica w jaki sposob uzyskam znacznik czasu. Funkcja mktime() tez chyba liczy w dobry sposob.
Chodzi o to ze jak odejme 2 daty od siebie to wynik jest zly.
Crom
mktime zwraca timestamp a to data liczona od 1.1.1970
Jeśli chcesz obliczyć różnicę dni, minut, sekund między dwiema datami to tu masz przykład:
http://www.compzone.org/art-5-Podzial+reko...+strony-10.html
Bardziej skomplikowane już byłoby jeśli chciałbyś podawać miesiące i lata bo trzeba uwzględniać zmienną ilość dni w miesiącach i lata przestępne.
Amorph
Czytacie manuale?

"Funkcja zwraca uniksowy znacznik czasu odpowiadający podanym argumentom. Znacznik czasu jest liczbą całkowitą długą (long integer) zawierającą liczbę sekund dzielącą uniksową Epokę (1 stycznia 1970) od podanego w argumentach czasu. "

Jak ma ci podawać np różnicę 1 roku questionmark.gifquestionmark.gif

//edit: Crom wyprzedził smile.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.