Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]odejmowanie dat
Forum PHP.pl > Forum > Przedszkole
przemek45
potrzebuje obliczyc ilosc miesiecy miedzy dwoma datami

dla takich wartosci dziala ok
  1. $datetime1 = date_create('2015-11');
  2. $datetime2 = date_create('2015-09');
  3. $interval = date_diff($datetime1, $datetime2);
  4. echo $interval->format('%M');
  5.  
  6. //zwraca 02


dla takich juz nie działa poprawnie
  1. $datetime1 = date_create('2015-10');
  2. $datetime2 = date_create('2015-09');
  3. $interval = date_diff($datetime1, $datetime2);
  4. echo $interval->format('%M');
  5.  
  6. //zwraca 00 a powinno 01


w czym moze byc problem?

viking
Zwraca 01 na kilku wersjach PHP.
przemek45
mam PHP Version 5.6.3
na jakiej wersji testowales ?
viking
http://sandbox.onlinephpfunctions.com/
przemek45
no wlasnie przed chwila znalazlem tą strone

  1. $datetime1 = date_create('2015-01');
  2. $datetime2 = date_create('2015-01');
  3.  
  4. for($i=0;$i<11;$i++)
  5. {
  6.  
  7. $interval = date_diff($datetime1, $datetime2);
  8. echo $interval->format('%M')."\n";
  9.  
  10. $datetime1 = $datetime1->modify('+1 month');
  11. }
  12.  
  13. //wynik jest taki 00 01 01 03 03 05 05 07 08 08 10
  14.  


o co tu moze chodzic ?
darko
Spróbuj obiektowo:
http://php.net/manual/pl/datetime.diff.php
przemek45
obiektowo byl taki sam problem

wiem juz w czym problem, chodzi chyba o strefe czasowa

  1. date_default_timezone_set('Europe/Warsaw');
  2.  
  3. $datetime1 = date_create('2015-10');
  4. $datetime2 = date_create('2015-09');
  5. $interval = date_diff($datetime1, $datetime2);
  6. echo $interval->format('%M');


jak nie ustawie strefy czasowej w http://sandbox.onlinephpfunctions.com/ to wszystko gra
a jak ustawie to jest zle

tylko ze ja potrzebuje miec strefe ustawioną

ktos ma pomysl dlaczego przy ustawieniu strefy czasowej to nie dziala?

jeszcze kolejny klopot jest taki
  1. $datetime1 = date_create('2016-10');
  2. $datetime2 = date_create('2015-09');
  3. $interval = date_diff($datetime1, $datetime2);
  4. echo $interval->format('%m');
  5.  
  6. //zwraca 1


jak zrobic zeby zwracało zawsze liczbe miesiecy, w tym przypadku 13

albo moze inaczej, czy mozna to jakos prosciej w inny sposob zrobic
potrzebuje odjac dwie daty, ktore są w formacie 2015-11 czyli rok i miesiac
w efekcie chcialbym otrzymac liczbe miesiecy np 50 miesiecy
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.