Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Blad w mktime() ?, niedokladnosc wyniku
barts
post 29.04.2007, 12:26:48
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.07.2005

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


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?
Go to the top of the page
+Quote Post
aurox
post 29.04.2007, 15:49:59
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 22.02.2007

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


spróbuj

strtotime("2007-01-01") -> też uzyskasz unixowy znacznik czasu. (data jest przypadkowa).
Go to the top of the page
+Quote Post
barts
post 1.05.2007, 11:57:44
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.07.2005

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


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.
Go to the top of the page
+Quote Post
Crom
post 1.05.2007, 13:38:56
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 30.04.2007

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


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.
Go to the top of the page
+Quote Post
Amorph
post 1.05.2007, 13:48:40
Post #5





Grupa: Zarejestrowani
Postów: 309
Pomógł: 0
Dołączył: 6.06.2006
Skąd: include('root/europe/ poland/szczecin.php');

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


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

Ten post edytował Amorph 1.05.2007, 13:49:15
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 06:18