Portál AbcLinuxu, 12. května 2025 06:18

Dotaz: Vypocet datumu v php - divny vysledok

28.6.2009 19:58 amico | skóre: 24
Vypocet datumu v php - divny vysledok
Přečteno: 628×
Odpovědět | Admin

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
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

28.6.2009 20:33 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Vypocet datumu v php - divny vysledok
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tipoval bych letní čas, to by odpovídalo rozdílu že je o hodinu méně... ale znamenalo by to i že si PHP domýšlí zimní/letní čas podle daného data (?). Zkuste časy zadat v nějakém ISO formátu a oba třeba jako letní, jestli to pak bude sedět.
28.6.2009 20:42 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Vypocet datumu v php - divny vysledok
Jako řešení by mělo stačit buď zadávat časy i s posunem od UTC a nebo prostě výsledek zaokrouhlit na celé dny (víc než o půl dne se čas neposouvá).
28.6.2009 20:55 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Vypocet datumu v php - divny vysledok
Odpovědět | | Sbalit | Link | Blokovat | Admin

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() )

 

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
28.6.2009 21:14 amico | skóre: 24
Rozbalit Rozbalit vše Re: Vypocet datumu v php - divny vysledok
Odpovědět | | Sbalit | Link | Blokovat | Admin

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

28.6.2009 22:10 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Vypocet datumu v php - divny vysledok

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

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.