Portál AbcLinuxu, 3. listopadu 2025 17:03
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.