Portál AbcLinuxu, 17. července 2025 17:56
Zdravim
tuna ste mi poradili ako vyriesit problem v calc. Dokaze to spravit PHP?.
Zmeny sa striedaju dokola zmena A,B,C,D. Dna 1.1.2009 nastupuje zmena A aka zmena vyjde napr. na 25.6.2009?
V calc funguje pocet dni od 1.1.2009 do 25.6.2009 => vydeli 4 a zvysok po celociselnom deleni urci index pola A,B,C,D.
V php nedokazem spocitat rozdiel medzi dvoma datumami...
function time_diff_hours($begin, $end) { return (strtotime($end) - strtotime($begin)) / 3600; }To by vas mohlo namotivovat, jak vypocat rozdil mezi dvema datumy
Fce strtotime();
převede textový datum na timestamp což jsou sekundy a jeden den má 86400 sekund.
Takže:
$pocetDni = intVal(round((strtotime('2009-01-01') - strtotime('2009-06-25')) / 86400));
Platí v rozmezí roků 1900 - 2038
No a operátor % je zbytek po dělení, takže:
$pocetDni %= 4;
Dá index 0 - 3.
PS: strtotime umí zajímavé věci s datumem, pokud zklame vrací false.
Pro udržení kompaktibility a ipro staší PHPka je dobrá cesta zadávat datum v universálním formátu YYYY-MM-DD
intVal a round je vlastně zbytečné bo toto dělení probíhá celočíselně…
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.