| 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: 9 let
|
|||
0