Autor | Zpráva | ||
---|---|---|---|
Taps Profil |
#1 · Zasláno: 27. 10. 2016, 23:22:42
Zdravím, pomocí skriptu získávám datumy z jiného webu (viz níže). Potřeboval bych však zjistit počet dní mezi dvěma datumy. Mohl by mi někdo poradit? Trošku vidím problém v tom, že tvar získaných datumů nemá jednou podobu
17.12. - 24.12.2016 24.12. - 31.12.2016 31.12.2016 - 7.1.2017 7.1. - 14.1.2017 Děkuji |
||
Keeehi Profil |
#2 · Zasláno: 28. 10. 2016, 01:03:55
Taps:
Tak si ty datumy nejdříve normalizuj. Postupně je projdi dvojici po dvojici, každý řádek rozděl na od a do zvlášť. Ořež případné přebytečné mezery a u prvního překontroluj, zda má rok. Pokud ne, tak mu přidej stejný jako má ten do. No a pak už můžeš použít jednoduše funkci strtotime pro získání datumů v lepším formátu a ty pak můžeš odečíst, aplikovat diff nebo tak něco. |
||
Kcko Profil |
Dle Keehi-ho návodu takto nějak:
<? $dates = <<< DATA 17.12. - 24.12.2016 24.12. - 31.12.2016 31.12.2016 - 7.1.2017 7.1. - 14.1.2017 10.10.2017 - 23.10.2018 10.10. - 23.10.2018 DATA; $rawDates = []; foreach (explode("\n", $dates) as $row) { $ex = array_map("trim", explode("-", $row)); if (explode(".", $ex[0])[2] == "") { $ex[0] = $ex[0]."" . explode(".", $ex[1])[2]; } $rawDates[] = ["from" => $ex[0], "to" => $ex[1], "fromDt" => new \DateTime($ex[0]), "toDt" => new \DateTime($ex[1])]; } foreach ($rawDates as $row) { $diff = $row["toDt"]->diff($row["fromDt"]); echo $row["from"] . " - " . $row["to"] . " rozdíl (".$diff->days.") <br />"; } Taps: Na takovouhle trivialitu by ses zrovna Ty ptát nemusel ne? |
||
Taps Profil |
Kcko:
Děkuji. Občas mám slabší chviku, kdy hledám zbytečné složitosti v jednoduchém řešení. |
||
Časová prodleva: 8 let
|
0