northwest
(northwest)
30 Marzec 2015 10:01
#1
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?smile.gif
Bardzo proszę o pomoc,
Northwest
grzelix
(Grzelix)
30 Marzec 2015 10:20
#2
Tutaj masz dodawanie jednego dnia:
http://stackoverflow.com/questions/1394791/adding-one-day-to-a-date
do tego zwykły for/while i będzie działać.
Czy szukasz bardziej wysublimowanego rozwiązania? Jeśli tak to podaj co masz i co byś chciał zoptymalizować.
nie napisałeś czy pobierasz daty z bazy więc na samym PHP
northwest
(northwest)
30 Marzec 2015 20:37
#4
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ć?
northwest:
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ć?
Może najpierw pokaż w której linii masz błąd
kostek135
(kostek135)
1 Kwiecień 2015 05:11
#6
W tej, gdzie nazwa klasy zaczyna się od forward slasha - flies away…
hoobert
(hoobert)
2 Kwiecień 2015 13:47
#7
Nazwę klasy możesz rozpocząć od znaku backslasha, jest to separator przestrzeni nazw w PHP >= 5.3.
Co do błedu, nie jest to wina wersji PHP, bo klasy DateTime/DateInterval są obsługiwane przez wersję 5.3, jest to wina błędnie zadeklarowanej tablicy. W nowszych wersjach interpretera jest zaimplementowana możliwość takiej definicji, natomiast 5.3 tego jeszcze nie obsługuje.
Zamień $d = []; na $d = array() i powinno grać.