Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[PHP] Daty.
#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 Smile
Odpowiedz
#2
Kod:
$data = date('Y-m-d G-i-s', $dane[6] + strtotime('+10 days'))
Pozdrawiam Wink
Odpowiedz
#3
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;
Odpowiedz
#4
W bazie na bank masz taką datę jak podałeś? Smile
Odpowiedz
#5
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 ;>
Odpowiedz
#6
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
Odpowiedz
#7
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?
Odpowiedz
#8
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ę.
Odpowiedz
#9
Aha rozumiem.. Dzięki za wyjaśnienie, podzieliłem i zaokrągliłem jak pokazałeś i wyszło dobrze Smile
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Przetwarzanie daty wraz z funkcją Morfeusz_2005 3 3,327 03-02-2011, 17:37
Ostatni post: Morfeusz_2005
  Zapis daty w bazie danych dziamber 5 5,219 08-06-2009, 03:52
Ostatni post: Szorstki

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl