两个日期之间的差异(字符串)

时间:2021-01-21 08:38:39

标签: php

第一个问题:

我有一个小问题。

我想知道我以字符串格式收到的两个日期(小时数)之间的差异

除非我有一个错误:

致命错误:未捕获的错误:调用 C:\xampp\htdocs\simu_boitier\modeles\dao\tarifDAO.php:15 中 bool 上的成员函数 diff() 堆栈跟踪:#0 C:\xampp\htdocs\ simu_boitier\controleurs\controleurSimulateurTarif.php(60): tarifDAO::calculMontant('M', '2021-01-21T09:2...', '2021-01-21T13:2...', 'Clas', '500') #1 C:\xampp\htdocs\simu_boitier\controleurs\controleurPrincipal.php(22): include_once('C:\xampp\htdocs...') #2 C:\xampp\htdocs\simu_boitier\index .php(14): include_once('C:\xampp\htdocs...') #3 {main} 在第 15 行的 C:\xampp\htdocs\simu_boitier\modeles\dao\tarifDAO.php 中抛出

public static function calculMontant($categ_voiture, $dateDebut, $dateFin, $formuleAbonnement, $distanceKM) {

        echo ($dateDebut);
        echo($dateFin);

        $test = DateTime::createFromFormat('Y-m-d h:i:s', $dateDebut);
        $testdate = DateTime::createFromFormat('Y-m-d h:i:s', $dateFin);

        $duree = $test->diff($testdate);
        echo $duree->format('%h hours');

    } 

回声返回:

2021-01-21T09:24

2021-01-21T13:24

谢谢

编辑求解:

    public static function calculMontant($categ_voiture, $dateDebut, $dateFin, $formuleAbonnement, $distanceKM) {

        $dateDebut = str_replace('T', ' ', $dateDebut);
        $dateFin = str_replace('T', ' ', $dateFin);

        $test = DateTime::createFromFormat('Y-m-d h:i', $dateDebut);
        $testdate = DateTime::createFromFormat('Y-m-d h:i', $dateFin);

        $duree = $test->diff($testdate);
        echo "test";
        echo $duree->format('%H hours');

        //$tarif_horaire = self::recupTarifHoraire($categ_voiture, $duree, $formuleAbonnement);
        $tarif_km = self::recupTarifKM($categ_voiture, $distanceKM, $formuleAbonnement);

        //$tarif_totale = $tarif_horaire*$duree;
        //$tarif_totale =$tarif_totale + $tarif_km*$distanceKM;

        $tarif_totale = $tarif_km*$distanceKM;

        return $tarif_totale;


    }

第二个问题: 如果“duree”值等于或大于 24,则函数会出错。 没有错误消息,但我的 echo 没有显示任何内容。

例如,如果两个日期之间有 1 周,他们会返回总小时数 (168)

谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用 Carbon 日期组件...


$diff = Carbon\Carbon::parse($date)->diffForHumans(Carbon\Carbon::now());


echo $diff; //before 24 days

答案 1 :(得分:0)

此代码有效:

public static function calculMontant($categ_voiture, $dateDebut, $dateFin, $formuleAbonnement, $distanceKM) {

        $date1 = new DateTime($dateDebut);
        $date2 = new DateTime($dateFin);

        $diff = $date2->diff($date1);

        $hours = $diff->h;
        $hours = $hours + ($diff->days*24);

        echo "nbheure : ", $hours;