Autor Zpráva
Berny
Profil
Nazdárek,

snažím se vyřešit, jak spočítat počet dnů ze zadaného intervalu. Např. kolik je dnů od 10.10.2009 do 15.10.2009. Odpověď je 6 (10, 11, 12, 13, 14 a 15.10.2009). Konstrukci na výpočet jsem našel:

1+ceil((strtotime('2009-10-15')-strtotime('2009-10-10'))/(60*60*24))


Vše fungovalo jak má do té doby, než jsem narazil na jeden interval, který vrátil nesprávný počet dnů. Jedná se o interval 23.10.200926.10.2009, který místo 4 dnů vrátí 5!

Konkrétní problém je, že funkce strtotime('2009-10-26') vrátí 1256511600 místo hodnoty 1256508000! Otázka teď zní, jak to vše vyřešit popř. jakou jinou konstrukci na výpočet dnů použít.

Děkuji,
Berny
Chamurappi
Profil
Reaguji na Bernyho:
Konkrétní problém je, že funkce strtotime('2009-10-26') vrátí 1256511600 místo hodnoty 1256508000!
Rozdíl je 3600, tedy jedna hodina. Copak se asi mohlo stát

Nevím, jestli v PHP existuje nějaké elegantnější řešení, ale pokud jsou ve vstupních řetězcích jen roky-měsíce-dny, mělo by stačit použít místo ceilu normální zaokrouhlování.
Berny
Profil
Chamurappi:
Díky moc, vůbec mě nenapadlo udělat si rozdíl těch návratových hodnot.. pak by mě možná ten letní čas i napadl - mockrát děkuji za pomoc.
Nox
Profil
Nemělo by http://cz2.php.net/manual/en/datetime.diff.php brát takové věci v úvahu?
Berny
Profil
Nox:
Tato třída je podporována až od verze 5.3.0. S mojí aktuální verzí 5.2.3 to nemám jak ověřit.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0