Autor Zpráva
dan55
Profil
Ahoj,
bude to asi hračka, ale nemůžu to domyslet.
Mám dva datumy ve formátu
January 21, 2010 20:37:16
January 21, 2010 22:45:24
A potřebuji je sečíst. Určitě je nějaká jednoduchá funkce, ale nedokáži si ji vybavit
edit// datumy jsou většinou jiné
keeehi
Profil
dan55:
Co to znamená je sečíst? To má být výsledek February 42, 4020 42:82:40?
dan55
Profil
keeehi:
Má to vyjít takto:
January 21, 2010 23:22:40 (pokud jsem já počítal dobře :-) )
keeehi
Profil
dan55:
spíš by jsi měl napsat, co se má s čím sčítat, protože to z toho nemůžu poznat. Připadá mi to, že to sečte jenom, minuty a vteřiny, a to co přesahuje, 60 převede výše.

PS: K čemu to potřebuješ?
dan55
Profil
Jo přesně jak jsi to napsal.
PS: vysvětlil bych to, ale bylo by to na dlouho xD
keeehi
Profil
dan55:
Jestli na to existuje nějaká funkce, to nevím, ale napsal jsem ti skript:
$cas1="January 21, 2010 20:37:16";
$cas2="January 21, 2010 22:45:24";

$sekundy=strtotime($cas1)%60;
$minuty=((strtotime($cas1)-(strtotime($cas1)%60))/60)%60;

$cas=strtotime($cas2)+$sekundy+$minuty*60;

echo date("F d, Y H:i:s",$cas);
Ve funkce date si naformátuj výstup, jak chceš. Teď to má stejný formát, jako vstupní parametry.
dan55
Profil
[#6]
Jé díky hned jak budu moc vyzkouším !!
Děkuji
dan55
Profil
[#6] keeehi
Prosímtě šlo by sčítat i dny? Tjn. když tam je hodina 24, aby se přičetl den? Jestli chápeš...
keeehi
Profil
dan55:
Určitě šlo, jenom mi musíš napsat jak. Jaký tedy má být výsledek January 21, 2010 20:37:16 + January 21, 2010 22:45:24?
Chamurappi
Profil
Reaguji na dana55:
Podle toho, co popisuješ, nechceš datumy sečíst, ale odečíst a jejich rozdíl přičíst k novějšímu. Což zní jako docela normální a jednoduché zadání.
Edit: Aha ↓, tak jsem se spletl. Aritmetika je mrcha.
keeehi
Profil
Chamurappi:
Rozdíl bych pochopil, ale on rozdíl nechce. Příklad: pro jednoduchost berme jen sekundy - 16 a 24 => rozdíl je 8 => 24+8=32. Jenže on chce aby výsledek byl 40, což je 16+24.

dan55:
Součet hodin, minut, vteřin:
<?php
$cas1="January 21, 2010 20:37:16";
$cas2="January 21, 2010 22:45:24";

$cas1_pole = getdate(strtotime($cas1));
$cas=strtotime($cas2)+$cas1_pole["seconds"]+$cas1_pole["minutes"]*60+$cas1_pole["hours"]*3600;

echo date("F d, Y H:i:s",$cas);
?>
Upravil jsem ten script, myslím, že teď je to více přehledné, takže další úpravy už zvládneš sám. Krátký popis: funkce strtotime převede textové vyjádření datumu na počet sekund (myslím, že se to počítá od roku 1990, ale to je vedlejší). Z tohoto počtu sekund vytvoří funkce getdate pole, které obsahuje sekundy, minuty, hodiny, a další. Toto pole se uloží do proměnné $cas1_pole, takže sekundy času 1 jsou přístupné takto: $cas1_pole["seconds"]. Poté se zase funkcí strtotime převede i druhý datum na sekundy a přičte se k němu co my potřebujeme (musí to být v sekundách, proto se minuty násobí 60-ti). No a ten výsledný čas (v sekundách) převede funkce date do čitelné podoby.
dan55
Profil
[#11] keeehi
Díky za vysvětlené. Ty funkce znám, už si poradím
[#10] Chamurappi
Já nechi rozdíl, ale keeehi to chápe

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0