Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> mktime
Lolek
post 13.06.2003, 12:10:32
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.06.2003
Skąd: Chorzów

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


Byłbym wdzięczny za pomoc, jeśli ktoś z Was się z czymś takim spotkał:
Mam napisać skrypt liczący ilość dni pomiędzy datami (daty po 1970). Użyłem funkcji mktime :
[php:1:132b076db3]<?php

$data1=mktime(0,0,0,$mc1,$dzien1,$rok1);
$data2=mktime(0,0,0,$mc2,$dzien2,$rok2);
$ile_dni=($data2-$data1)/(60*60*24);

?>[/php:1:132b076db3]
Wszystko byłoby dobrze, gdyby nie to, że licząc dni pomiędzy niektórymi datami otrzymuję liczby z wartościami po przecinku.
Np. pomiędzy 2003-11-15 a 2003-10-01 jest 45.041666666667 dni.
Dlaczego? Czy w mktime jest błąd?
Go to the top of the page
+Quote Post
konrad_vme
post 13.06.2003, 12:17:37
Post #2





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 19.04.2002
Skąd: Zielona Góra

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


hmm.... dziwne, sprawdzę to u siebie w domq (teraz jestem w szkole)


--------------------
revolution, the only solution
Go to the top of the page
+Quote Post
KaMeLeOn
post 13.06.2003, 14:26:33
Post #3





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


Cytat
Dlaczego? Czy w mktime jest błąd?

W żadnym wypadku nie...
[php:1:c44be4f614]<?php
$ile_dni=($data2-$data1)/(60*60*24);
?>[/php:1:c44be4f614]
Zastanów się nad tym dzieleniem, najlepiej z kalkulatorem w ręku...


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
Lolek
post 15.06.2003, 20:21:38
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.06.2003
Skąd: Chorzów

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


Cytat
Zastanów się nad tym dzieleniem, najlepiej z kalkulatorem w ręku...


Zastanowiłem się, ale albo mam taką zaćmę, albo ten kalkulator tu nie pomoże...
(Różnica dni pomiędzy np. '2003-9-15' a '2003-8-1' to równe 45 wg takiego liczenia j/w podałem. Ale pomiędzy datami z mojego pierwszego przykładu nadal jest 45 z hakiem).
Go to the top of the page
+Quote Post
Cudi
post 15.06.2003, 21:22:27
Post #5


Administrator planeta/IRC


Grupa: Przyjaciele php.pl
Postów: 385
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Zabrze

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


Jak widać nie jest to równa liczba, i raczej napewno nie jest to błąd mktime(); Wychodzi tak a nie inaczej, a wynik trzeba po prostu zaokrąglić i jest po sprawie.


--------------------
"Programmers are in a race with the Universe to create bigger and better idiot-proof programs, while the Universe is trying to create bigger and better idiots. So far the Universe is winning."
Cudi's devBlog
Go to the top of the page
+Quote Post
Lolek
post 16.06.2003, 09:05:57
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.06.2003
Skąd: Chorzów

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


No, cóż...
Zależy mi na niezawodności liczenia, dlatego zaokrąglanie nie wchodzi w grę.
Możnaby użyć do tego liczenia MySql
Cytat
"select (to_days("$data2") - to_days("$data1"))";

bo liczy bez ułamków, ale to trochę głupie łączyć się z bazą tylko dla uzyskania banalnej różnicy między datami.
Go to the top of the page
+Quote Post
kurtz
post 16.06.2003, 11:19:59
Post #7





Grupa: Przyjaciele php.pl
Postów: 786
Pomógł: 0
Dołączył: 18.03.2002
Skąd: Wroclaw/Warszawa

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


Cytat
Czy w mktime jest błąd?
nie ;) po prostu w nocy ok 26 byl przestawiany czas z letniego na zimowy wiec dzien sie lekko wydluzyl (o dodatkowa godizne ktora dostales po przecinku).

aby obliczac faktyczna roznice pomiedzy datami korzystaj wiec z gmmktime() ktore zwraca czasy w GMT (czyli bez uzglednianai stref czasowych).


pozdrawiam


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post
Lolek
post 16.06.2003, 14:35:31
Post #8





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.06.2003
Skąd: Chorzów

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


Kurtz! Dzięki!!! Twoja odpowiedź przywróciła mi jasność umysłu. Aż mi głupio, że zadałem takie bzdurnym pytanie. Wystarczyło dokładnie przeczytać opis funkcji.

Wszedłem na stronę http://pl.php.net/manual/pl/function.mktime.php i widzę z opisu funkcji, że zapomniałem o ostatnim jej opcjonalnym argumencie: "letni/zimowy".

Przetestuję, co jest dla mnie wygodniejsze gmmktime, czy mktime.

pozdrawiam
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: 12.06.2025 - 19:33