Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]odejmowanie dat
przemek45
post 17.01.2016, 14:43:52
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 17.01.2016

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


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?

Go to the top of the page
+Quote Post
viking
post 17.01.2016, 15:18:59
Post #2





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Zwraca 01 na kilku wersjach PHP.


--------------------
Go to the top of the page
+Quote Post
przemek45
post 17.01.2016, 15:37:12
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 17.01.2016

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


mam PHP Version 5.6.3
na jakiej wersji testowales ?
Go to the top of the page
+Quote Post
viking
post 17.01.2016, 15:42:00
Post #4





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


http://sandbox.onlinephpfunctions.com/


--------------------
Go to the top of the page
+Quote Post
przemek45
post 17.01.2016, 15:50:24
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 17.01.2016

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


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 ?

Ten post edytował przemek45 17.01.2016, 16:15:01
Go to the top of the page
+Quote Post
darko
post 17.01.2016, 18:45:03
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Spróbuj obiektowo:
http://php.net/manual/pl/datetime.diff.php


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
przemek45
post 17.01.2016, 19:09:32
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 17.01.2016

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


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

Ten post edytował przemek45 17.01.2016, 20:46:54
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 13:11