Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
[PHP] Daty. - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: Programowanie, Bazy danych (https://www.webmastertalk.pl/forum-programowanie-bazy-danych)
+--- Wątek: [PHP] Daty. (/thread-php-daty)



[PHP] Daty. - kajzur - 09-06-2009

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 Smile


RE: [PHP] Daty. - Jupiter - 09-06-2009

Kod:
$data = date('Y-m-d G-i-s', $dane[6] + strtotime('+10 days'))
Pozdrawiam Wink


RE: [PHP] Daty. - kajzur - 09-06-2009

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 Smile) ->> $wynik = date("Y-m-d G:i:s",(strtotime($dane[6]) + (60*60*24*10)));
echo $wynik;


RE: [PHP] Daty. - Marcin - 09-06-2009

W bazie na bank masz taką datę jak podałeś? Smile


RE: [PHP] Daty. - kajzur - 09-06-2009

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 Smile
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 ;>


RE: [PHP] Daty. - Labsta.com - 10-06-2009

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 Smile


RE: [PHP] Daty. - kajzur - 12-06-2009

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?


RE: [PHP] Daty. - Labsta.com - 12-06-2009

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ę.


RE: [PHP] Daty. - kajzur - 12-06-2009

Aha rozumiem.. Dzięki za wyjaśnienie, podzieliłem i zaokrągliłem jak pokazałeś i wyszło dobrze Smile