Autor Zpráva
Taps
Profil
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
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í.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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