Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zwiększenie daty o jeden dzień
habor
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 28.11.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


datetime

ew. możesz kombinować z strtotime i dodawać 3600 * 24 (doba) i zamieniać potem znów na datę
Go to the top of the page
+Quote Post
batman
post
Post #3





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Najbardziej łopatologiczny sposób:
  1. $data = '2012-04-02';
  2. echo date('Y-m-d', strtotime('+1 day', strtotime($data)));
Go to the top of the page
+Quote Post
scanner
post
Post #4





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Jeszcze bardziej łopatologicznie:
  1. $Date = new DateTime( '2012-04-02' );
  2. $Date->modify( '+1 day' );
  3. echo $Date->format( 'Y-m-d' );
Go to the top of the page
+Quote Post
maniana
post
Post #5





Grupa: Zarejestrowani
Postów: 207
Pomógł: 44
Dołączył: 18.05.2007

Ostrzeżenie: (0%)
-----


Fifi209:

Nie polecam tego sposobu. Wszystko ci się rozsypie przy zmianie czasu (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Fifi209
post
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
maniana
post
Post #7





Grupa: Zarejestrowani
Postów: 207
Pomógł: 44
Dołączył: 18.05.2007

Ostrzeżenie: (0%)
-----


Pisałem o sposobie 3600 * 24, tym opcjonalnym... Przy zmianie czasu uciekają poszczególne godziny.
Go to the top of the page
+Quote Post
habor
post
Post #8





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 28.11.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
sebastian.rozmus
post
Post #9





Grupa: Zarejestrowani
Postów: 48
Pomógł: 12
Dołączył: 7.03.2012

Ostrzeżenie: (0%)
-----


To pokaż tą pętle (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
habor
post
Post #10





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 28.11.2011

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
fullrespect
post
Post #11





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 24.05.2012

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
scanner
post
Post #12





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




@fullrespect: czy Twój post był naprawdę potrzebny?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:14