La traduction de la date de fin de la comparaison PHP DateTime est :
P粉920835423
P粉920835423 2023-07-31 15:48:47
0
1
497
<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粉920835423
P粉920835423

répondre à tous(1)
P粉720716934

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal