web-dev-qa-db-fra.com

Si autre instruction basée sur la valeur date_diff

J'ai un problème avec les dates.

J'ai besoin d'ajouter la logique if-else pour afficher un contenu différent.

Il est basé sur les valeurs date_diff. Et voici un problème:

Je dois afficher le bouton si la date du jour - date post_modifiée> = 3 heures et si la différence est inférieure à 3 heures - affiche le message par défaut: "Attendez x minutes avant d'utiliser le bouton".

Voici mes efforts:

<?php
  $now = new DateTime();
  $currentDateTime = $now->getTimestamp();
  $postUpdated = $post->post_modified;
  if ($currentDateTime - $postUpdated >= 1) :
?>
<button>Some value</button>
<?php  else:  ?>
 <p>Wait, please</p>
<?php endif; ?>

J'espère que vous pouvez m'aider. Je vous remercie.

2
Andrey Vasilkovsky

Vous pouvez utiliser strtotime() pour convertir l'heure en un entier, puis effectuer une opération conditionnelle.

// Get the current time
$now = strtotime("now");
// Convert post's modification time to int
$postUpdated = strtotime( $post->post_modified );
// Check if 3 hours has passed, each hour is 60*60 seconds
if ( $now - $postUpdated >= 3*60*60 ) {
    // First conditional
} else {
    // Second conditional
}

De même, si le format de l'heure est connu (généralement 0000-00-00 00:00:00), vous pouvez directement utiliser strftime() . Voici un exemple rapide:

$timestamp = strftime("%Y-%m-%d %h:%M:%S %a", time() - 3*60*60);

Vous avez maintenant une valeur formatée de 3 heures à l'avance, que vous pouvez utiliser dans date_diff().

0
Jack Johansson