Portál AbcLinuxu, 12. května 2025 06:18
Zdravim
tuna ste mi poradili ako zistit pocet dni medzi dvoma datumami.
datum1 = 1.1.2009
ak je datum2 v rozmedzi od 30.3.2009 - 25.10.2009 nevychadza mi tam rozdiel cele cislo. Ak dam vypisat aj hodiny tak tam vychadza 23 hodin... Neviete preco? a ako to osetrit?
$start = " 2009-1-1 "; $end = " 2009-3-30 "; //30.3.2009 - 25.10.2009 $a = strtotime ($start) ; $b = strtotime ($end) ; $c = ($b - $a)/86400; echo "$c"; // ukaze desatiny XX.9583333333 $uts['start'] = strtotime( $start ); $uts['end'] = strtotime( $end ); $diff = $uts['end'] - $uts['start']; if( $days=intval((floor($diff/86400))) ) $diff = $diff % 86400; if( $hours=intval((floor($diff/3600))) ) $diff = $diff % 3600; echo "$days"; echo "$hours"; // ukaze 23 hodín
Použijte tento zápis datumu:
$start = "2009-01-01 UTC"; $end = "2009-03-30 UTC";
Nebo jednodušeji vložit, jak jsem minule i uváděl, následující.
$c = intVal(round(($b - $a)/86400));
(… pak jsem to hloupě opravil a toto byl asi ten důvod proč vkládám ten round() )
Dik
Mna tiez napadlo - letny cas len mi to neslo do hlavy preco prave v tomto obdobi:
30.3.2009 - 25.10.2009
Ale vyskusal som to s round a funguje to presne tak ako mi treba
25.10.2009 se mění čas tak proto v tomto intervalu.
… ještě doplním:
fce date_default_timezone_set() může nastavit čas. zónu 'UTC' viz php.net
pak by to pravděpodobně bylo OK i s původním kódem
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.