Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zwiększenie daty o jeden dzień
Forum PHP.pl > Forum > PHP
habor
Witam,

Nie wiem już jak to podejść a więc proszę o pomoc.
Posiadam formularz w którym użytkownik podaje datę początkową i końcową np. od: 2012-04-02 do: 2012-04-15.
W pętli WHILE zwiększał bym datę o jeden dzień do momentu wyrównania się dat oraz przy każdym obrocie wyświetlał bym potrzebne informacje.
Myślałem, że uda mi się to stosując $data++ ale niestety php dodaje jeden dzień ale nie widzi zmiany miesiąca.
Próbowałem użyć funkcji mktime zamienić datę na liczbę ale też mi jakoś to nie wychodzi.

Data jest mi potrzebna do wykonywania zapytań i wyświetlania raportów za wybrany okres. Muszę wyświetlić dzień oraz ilość z każdego dnia osobno.


Z góry dzięki za pomoc.
Fifi209
datetime

ew. możesz kombinować z strtotime i dodawać 3600 * 24 (doba) i zamieniać potem znów na datę
batman
Najbardziej łopatologiczny sposób:
  1. $data = '2012-04-02';
  2. echo date('Y-m-d', strtotime('+1 day', strtotime($data)));
scanner
Jeszcze bardziej łopatologicznie:
  1. $Date = new DateTime( '2012-04-02' );
  2. $Date->modify( '+1 day' );
  3. echo $Date->format( 'Y-m-d' );
maniana
Fifi209:

Nie polecam tego sposobu. Wszystko ci się rozsypie przy zmianie czasu smile.gif
Fifi209
Podałem dwa, o którym piszesz?

Ja bym zastosował się do pierwszego, drugi podałem jako ewentualność.

do pierwszego odniósł się już scanner wink.gif
maniana
Pisałem o sposobie 3600 * 24, tym opcjonalnym... Przy zmianie czasu uciekają poszczególne godziny.
habor
Dziękuję za pomoc.
Zrobiłem za pomocą:
  1. $data = '2012-04-02';
  2.  
  3. echo date('Y-m-d', strtotime('+1 day', strtotime($data)));


Nie wiem dlaczego ale jak użyłem

  1. $Date = new DateTime( '2012-04-02' );
  2.  
  3. $Date->modify( '+1 day' );
  4.  
  5. echo $Date->format( 'Y-m-d' );


To pętla WHILE wykonywała się tylko jeden raz, oraz nie wykonywała się reszta skryptu.
sebastian.rozmus
To pokaż tą pętle wink.gif
habor
pętla wygląda tak

  1. $test = 0;
  2. $Date = new DateTime( '2012-04-02' );
  3. while($test<10)
  4. {
  5. $Date->modify( '+1 day' );
  6.  
  7. echo $Date->format( 'Y-m-d' );
  8. $test++;
  9. }


OK, poprawię się, po restarcie serwera wszystko działa smile.gif
fullrespect
poczytaj sobie o klasie http://fi2.php.net/manual/en/class.datetime.php

działa mniej wiecej tak:

$data = new datatime('tutaj mozesz podac date lub jak puste to przyjmie date z teraz');

chcesz zwiekszyc date o jeden dzien:
$data->modify('+1 day');

manual: http://fi2.php.net/manual/en/datetime.modify.php

poczytaj sobie o klasie http://fi2.php.net/manual/en/class.datetime.php

działa mniej wiecej tak:

$data = new datetime('tutaj mozesz podac date lub jak puste to przyjmie date z teraz');

chcesz zwiekszyc date o jeden dzien:
$data->modify('+1 day');

manual: http://fi2.php.net/manual/en/datetime.modify.php
scanner
@fullrespect: czy Twój post był naprawdę potrzebny?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.