Lista dat w podanym zakresie

0

Witam serdecznie,
Potrzebuję skrypt do wyświetlenia dat pomiędzy 2 datami. Czyli przykładowo podaję datę:
2015-01-01 oraz 2015-01-05 i skrypt zwraca:

2015-01-01
2015-01-02
2015-01-03
2015-01-04
2015-01-05

Wie ktoś może jak to zrobić w php?:)

Bardzo proszę o pomoc,
Northwest

1

Prosisz o pomoc czy gotowca?
Jeżeli gotowca to zapraszam na PW, 50 złotych i masz :)
A jeżeli pomoc, to pokaż, co sam próbowałeś wykombinować.

0

strtotime zamieni string typu 2014-01-01 + 5 days na czas (timestamp) - sformatujesz go sobie strftime/date z powrotem do czytelnej formy.
Pozostaje jeszcze porównać która data jest mniejsza/większa, obliczyć różnicę w dniach ( np http://stackoverflow.com/questions/1940338/date-difference-in-php-on-days ) - zrobić pętlę for i masz rozwiązanie.

Ale baty się należą za lenistwo, to popularny temat.

0

Opracowałem taki skrypt:

 $start = '2015-10-11';
$datetime1 = new DateTime($start);
$datetime2 = new DateTime('2015-10-13');
$interval = $datetime1->diff($datetime2)->d;

$d = [];
for($i = 0; $i<= $interval; $i++) {
  $d[] = $datetime1->add(new \DateInterval('P'. $i .'D'))->format('d.m.Y');
}

Na localhoście działa mi to poprawnie, tylko na serwerze (home.pl) wywala błąd:

Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /book.php on line

Na home.pl jest php 5.3 i chyba przez to, to nie działa :(

Ma ktoś może pomysł jak to przerobić?

dodanie znacznika <code class="none"> - @furious programming

0

I nie da się w panelu home.pl zmienić wersji PHP? Wydaje mi się, że conajmniej 5.4 powinno być dostępne, skoro już 5.6 wyszło trochę temu

Spróbuj:

for($i = 0; $i<= $interval; $i++) {
  $tmpinterval = new \DateInterval('P'. $i .'D');
  $d[] = $datetime1->add($tmpinterval)->format('d.m.Y');
}

(Szkoda, że nie wskazałeś która to linia... Ja nawet nie pamiętam jaka składnia jest niedozwolona przed php 5.4, bo się w archeologa i stare wersje po prostu nie bawię).

1 użytkowników online, w tym zalogowanych: 0, gości: 1