[PHP] Jak dodawać do siebie dni?


(michm4) #1

Witam

Mam problem bo muszę dodać do siebie dni.

Daty są w takiej formie ROK-MIESIĄC-DZIEŃ (np. 2010-03-29) i chcę do tej daty dodać np. 4 dni (czyli będzie 2010-04-02)

Jak to zrobić w php ?


(Xeon Bloomfield) #2
<?php= date_create('2000-01-01');date_add($date, date_interval_create_from_date_string('10 days'));date_format($date, 'Y-m-d');?[/code]



Powyższy kod to to czego szukasz...



Dodaje do daty "2000-01-01" 10 dni, co daje "2000-01-11".

(michm4) #3

to nie jest to o co mi chodzi

Chodzi o to że znam date, i jest to załóżmy data 2010-03-29 i chcę dodać do tej daty 4 dni i nie wiem jaki to będzie wynik i chcę, żeby php dla mnie to obliczyło (w tym przypadku wyjdzie wynik 2010-04-02)


(Xeon Bloomfield) #4

Zamiast "data_create('2000-01-01');" daj "data_create($data_current);", gdzie "$data_current" to string z datą w takiej formie.


(michm4) #5

ehh...

nie chodzi mi o żadną zmianę formatu. Chodzi mi o dodawanie do siebie dni i że jak dodam 30+5 to żeby nie wyszło że to 35 dzień tylko że to już nowy miesiąc i wszystko wyglądało tak jak powinno być


(Xeon Bloomfield) #6

To robi dokładnie to o co prosisz...

Tworzy nową zmienną z datą i na niej robi operacje...


(michm4) #7

twój kod nie działa jest taki błąd

Fatal error: Call to undefined function date_add() in /var/www/xxxxx/test.php on line 3

(Xeon Bloomfield) #8

U mnie działa bezbłędnie, więc wina jest u Ciebie.


(michm4) #9

to musiałeś coś źle skopiować tutaj bo próbowałem na 4 różnych hostingach i na każdym ten sam błąd, nawet na unixstormie.


(Xeon Bloomfield) #10

Kod skopiowany z mojego postu.

Zerknij tymczasowo u mnie:

http://xeon.servehalflife.com/temp2/date_add_10_days.php


(michm4) #11

weź jeszcze raz wklej ten kod bo naprawdę nie działa :slight_smile:


(Xeon Bloomfield) #12
$date = date_create('2000-01-01');date_add($date, date_interval_create_from_date_string('10 days'));date_format($date, 'Y-m-d'); [/code]



Jakie błędy się pokazują?

(michm4) #13

ciągle ten sam błąd

Fatal error: Call to undefined function date_add() in /var/www/folder1/folder2/test.php on line 3

czyli error w tej lini

date_add($date, date_interval_create_from_date_string('10 days'));

(Xeon Bloomfield) #14

Spróbuj:

$date = new DateTime('2000-01-01');$date-add(new DateInterval('P10D'));$date-format('Y-m-d') . "\n"; [/code]

(michm4) #15

znowu error

Fatal error: Call to undefined method DateTime::add() in /var/www/panel/files/test.php on line 3

(Xeon Bloomfield) #16
$dni = 7;$wynik = date("Y-m-d H:i:s", time()+(60*60*24*$dni));

(Damgora) #17

potrzebujesz php co najmniej 5.3.0


(michm4) #18

teraz działa wielkie dzięki :slight_smile:

Ale jak wprowadzić samemu date, bo nie chcę, żeby była dzisiejsza :slight_smile:


(floyd) #19

Widocznie na tym serwerze jest starsza wersja php, a potrzebna jest wersja (PHP >= 5.3.0) aby były obsługiwane te funkcje.


(Damgora) #20

spróbuj:

$data = '2011-01-19';$dni = 7;