Ocena wątku:
- 0 głosów - średnia: 0
- 1
- 2
- 3
- 4
- 5
[PHP] Daty.
|
Liczba postów: 263
Liczba wątków: 63
Dołączył: 25-03-2008
Reputacja:
1
Witam,
chciałbym zrobić, tak by do daty pobieranej z bazy danych dodać 10 dni, oraz obliczyć, ile czasu zostało do obliczonej daty..
Data którą mam z bazy jest zawarta z zmiennej $dane[6] i jest w formacie: date("Y-m-d G-i-s");
Proszę o pomoc
Liczba postów: 35
Liczba wątków: 3
Dołączył: 11-10-2008
Reputacja:
0
Kod: $data = date('Y-m-d G-i-s', $dane[6] + strtotime('+10 days'))
Pozdrawiam
Liczba postów: 263
Liczba wątków: 63
Dołączył: 25-03-2008
Reputacja:
1
09-06-2009, 17:07
(Ten post był ostatnio modyfikowany: 09-06-2009, 17:14 przez kajzur.)
Z daty 2009-06-07 19:25:33 zrobił 2009-06-19 12-00-26, a nie powinien przypadkiem zrobić 17? Jednym słowem podaje date od dnia dzisiejszego, a nie od tego co pobrał z bazy danych ;>
Chciałbym uzyskać datę która będzie 10 dni w przód, od daty pobranej z bazy danych.
Zrobiłem  ) ->> $wynik = date("Y-m-d G:i:s",(strtotime($dane[6]) + (60*60*24*10)));
echo $wynik;
Liczba postów: 852
Liczba wątków: 35
Dołączył: 17-12-2007
Reputacja:
12
W bazie na bank masz taką datę jak podałeś?
Liczba postów: 263
Liczba wątków: 63
Dołączył: 25-03-2008
Reputacja:
1
09-06-2009, 17:27
(Ten post był ostatnio modyfikowany: 09-06-2009, 17:34 przez kajzur.)
Hm, w bazie mam:
2009-06-07 19:25:33
I dostałem dobrze czas - 2009-06-17 19:25:33
Chciałbym również obliczyć za ile dni będzie data uzyskana, czyli 2009-06-17 19:25:33, jeśli będzie mniej niż dzień, to w godzinach, a jeśli mniej niż godzina to napis - mniej niż godzina 
Kod PHP: $theend = date("Y-m-d G:i:s");
$koniec = date("d",(strtotime($wynik) - strtotime($theend)));
Tak zrobiłem, i zwraca mi 09 dni.. Hm.. Skoro aukcja była wystawiona 7 czerwca, a trwa 10 dni, to pozostało (dziś 9) 8 dni, tak? Chyba że jakoś godziny się skumulowały ;>
Liczba postów: 682
Liczba wątków: 9
Dołączył: 03-03-2009
Reputacja:
18
No myślę, że sprawa dotyczy godziny i dopiero po 19:25:33 będzie 8 dni. Choć nie wiem czy ta myśl Ci pomoże
Liczba postów: 263
Liczba wątków: 63
Dołączył: 25-03-2008
Reputacja:
1
Kod PHP: $czas_z_bazy = strtotime($dane[6]); $czas_plus_10dni= $czas_z_bazy + (86400*10); $czas_teraz = strtotime(date("Y-m-d G:i:s")); $do_konca = $czas_plus_10dni - $czas_teraz;
$wynik = date("Y-m-d G:i:s",$czas_plus_10dni); echo "Aukcja kończy się: <b>".$wynik."</b><br>";
echo $do_konca; if($do_konca > 86400) echo'Więc kończy się za '.date("j",$do_konca).' dni.'; elseif ($do_konca > 3600) echo'Więc kończy się za '.date("G",$do_konca).' godzin(y).'; elseif($do_konca > 0) echo'<font color="red">Pozostała mniej niż godzina!</font>'; else echo'<font color="red">Aukcja dobiegła końca.</font>';
Czemu taki skrypt zwraca mi o jeden dzień więcej?
Liczba postów: 682
Liczba wątków: 9
Dołączył: 03-03-2009
Reputacja:
18
12-06-2009, 06:31
(Ten post był ostatnio modyfikowany: 12-06-2009, 06:44 przez Labsta.com.)
Ja dalej obstawiam przy tym co napisałem wyżej.
Jeśli nie chcesz z partyzanta w tej linii odjąc "1"
Kod: if($do_konca > 86400) echo'Więc kończy się za '.date("j",$do_konca).' dni.';
to zmień na
Kod: if($do_konca > 86400) echo'Więc kończy się za '.floor($do_konca/86400).' dni.';
Nie przeanalizowałem całej logiki, może jakiś warunek będzie trzeba dodać jeszcze.
P.S. Jeszcze mały dowód na to co mówiłem ostatnio:
Kod: echo date("j",86401);
wynik to 2 dni choć przekracza dobę tylko o 1 sekundę.
Liczba postów: 263
Liczba wątków: 63
Dołączył: 25-03-2008
Reputacja:
1
Aha rozumiem.. Dzięki za wyjaśnienie, podzieliłem i zaokrągliłem jak pokazałeś i wyszło dobrze
|
Użytkownicy przeglądający ten wątek: 1 gości
|
|
Sponsorzy i przyjaciele
|
|
|