recherche

Maison  >  Questions et réponses  >  le corps du texte

La traduction de la date de fin de la comparaison PHP DateTime est :

<p>J'essaie de désactiver un bouton en comparant la date/heure du jour à une date d'échéance dans la base de données, mais j'ai un problème. J'ai posé la condition mais cela ne fonctionne pas sur un délai d'un jour, par exemple : 2023-07-31 00:00:00 contre 2023-07-31 00:00:00. <br /><br />Voici le code que j'ai essayé : </p><p><br /></p> <pre class="brush:php;toolbar:false;">//Variables // $request_project->start_date (contient la date de début avec le type de données datetime également défini par l'utilisateur) // $request_project->end_date (contient la date limite avec le type de données datetime également défini par l'utilisateur) $startDate = new DateTime($request_project->start_date); // $endDate = new DateTime($request_project->end_date); $startDateTime = date('Y-m-d') ' 00-00-00'; $endDateTime = date('Y-m-d') ' 23-59-59'; $startDateString = $startDate->format('Y-m-d H:i:s'); $endDateString = $endDate->format('Y-m-d H:i:s');</pre> <p>Je souhaite donc comparer si la date d'échéance définie par l'utilisateur est inférieure ou égale à la date et l'heure d'aujourd'hui. Si c'est le cas, le bouton sera actif et aura la classe btn-primary, sinon l'attribut désactivé sera ajouté et btn-primary. sera remplacé par btn -secondaire. </p> <pre class="brush:php;toolbar:false;"><?php if($endDateString <= $endDateTime) {?> <a href="#" class="btn btn-primary btn-hover w-100 mt-2" onclick="doSomething()">Postuler maintenant <i class="uil uil-arrow-right"></i></a> <?php } else { ?> <a href="#" class="btn btn-secondaire btn-hover w-100 mt-2 désactivé" onclick="doSomething()">Postuler maintenant <i class="uil uil-arrow-right"> ≪/i>≪/a> <?php } ?> <a href="#" class="btn btn-soft-warning btn-hover w-100 mt-2 bookmark" id="<?=$request_project->id?>"><i class="uil uil-bookmark"> </i> Ajouter un signet</a></pre> <p>Au lieu d'exécuter le bloc de code else, il exécute toujours le bloc de code if, même si la date de fin a expiré. </p>
P粉920835423P粉920835423550 Il y a quelques jours551

répondre à tous(1)je répondrai

  • P粉720716934

    P粉7207169342023-08-01 10:25:25

    Le dilemme que vous rencontrez semble être lié à la façon dont vous comparez la date de fin à la date-heure actuelle. Le problème réside dans la façon dont vous construisez la variable $endDateTime à l'aide de la fonction date().

    Dans votre code, vous utilisez 'Y-m-d' comme format de date(), ce qui signifie qu'il ne contient que l'année, le mois et le jour, sans l'heure. Vous avez ensuite concaténé « 23-59-59 » à la date, ce qui a entraîné un format datetime incorrect.

    Pour résoudre ce problème, vous devez modifier la variable $endDateTime pour inclure l'heure complète (heures, minutes et secondes) dans le format correct avant de comparer. Vous pouvez le faire en utilisant la fonction date() au format 'Y-m-d H:i:s', comme ceci :

    $endDateTime = date('Y-m-d 23:59:59');
    

    Maintenant, $endDateTime aura le format correct et votre comparaison devrait fonctionner comme prévu.

    Voici le code mis à jour :


    <?php
    $startDate = new DateTime($request_project->start_date);
    $endDate = new DateTime($request_project->end_date);
    $endDateTime = date('Y-m-d 23:59:59');
    $startDateString = $startDate->format('Y-m-d H:i:s');
    $endDateString = $endDate->format('Y-m-d H:i:s');
    
    if ($endDateString <= $endDateTime) {
        ?>
        <a href="#" class="btn btn-primary btn-hover w-100 mt-2" onclick="doSomething()">Apply Now <i
                    class="uil uil-arrow-right"></i></a>
        <?php
    } else {
        ?>
        <a href="#" class="btn btn-secondary btn-hover w-100 mt-2 disabled" onclick="doSomething()">Apply Now <i
                    class="uil uil-arrow-right"></i></a>
        <?php
    }
    ?>
    <a href="#" class="btn btn-soft-warning btn-hover w-100 mt-2 bookmark"
       id="<?= $request_project->id ?>"><i class="uil uil-bookmark"></i> Add Bookmark</a>
    

    Avec cet ajustement, le code devrait désormais désactiver correctement le bouton lorsque la date de fin est postérieure à la date d'aujourd'hui.

    répondre
    0
  • Annulerrépondre