2017-08-12 1 views
0

J'utilise un champ ACF pour permettre à un client de gérer un compte à rebours pour son prochain événement J'utilise JS flip clock sur la version desktop mais comme il n'est pas responsive, j'ai décidé d'utiliser diff date pour faire écho juste le nombre de jours pour mobile.Comment puis-je utiliser une variable dans une fonction de comparaison de date?

Le site est en direct actuellement à theindustrialproject.co.uk

Le code que j'ai actuellement est la suivante:

<?php 
    $date1 = date_create(date()); 
    $date2 = date_create(the_field('mobile_date')); 
    $diff = date_diff($date1,$date2); 

    $difference = $diff; 

    if ($difference < 0) { $difference = 0; } 
    echo '<span class="countdown-mobile">'. floor($difference/60/60/24)."</span><br />"; 
    if ($difference == 1) { echo "<p>Day</p>"; } 
     else { echo "<p>Days</p>"; } 
?> 

mais il retourne toujours 0. Pour référence, j'ai tiré le code de here

+2

'date_diff' ne retourne pas de numéro, mais un [' DateInterval' objet] (http://php.net/manual/en/datetime.diff.php#refsect1-datetime .diff-returnvalues). Avez-vous vérifié la valeur de '$ difference' avant et après cette if-statement où vous l'avez forcée à 0? – rickdenhaan

Répondre

1

Sans sachant ce que la fonction the_field('mobile_date') va retourner (soit une date ou un horodatage?), vous devrez peut-être modifier cette ligne particulière ci-dessous, mais vous devriez être en mesure d'utiliser l'objet DateTime et fo Rmat la différence comme ce

$format='Y-m-d'; 
$timezone=new DateTimeZone('Europe/London'); 

/* We need 2 datetime objects - one for now the other for the future date */ 
$now=new DateTime(date($format, strtotime('now')), $timezone); 
$target=new DateTime(the_field('mobile_date'), $timezone); 

/* Format the difference in days */ 
$days = $now->diff($target)->days; 

echo "<span class='countdown-mobile'>{$days}</span><br />" . ($days == 1 ? '<p>Day</p>' : '<p>Days</p>'); 
+0

Merci, ça m'a un peu plus loin mais pas tout à fait là. Il revient 17392 jours avant le 2017-09-08. J'ai essayé de diviser par 60 et 24 au cas où la fonction reviendrait heures ou minutes, mais cela ne fonctionne pas tout à fait. La fonction 'the_field ('mobile_date')' renvoie un champ personnalisé de la base de données. J'ai changé cela en 'get_field ('mobile_date')' car cela a simplement trié le champ à la place. mobile_date est actuellement défini en tant que champ de texte. –

+0

Quelle est la sortie de 'the_field ('mobile_date')' s'il vous plaît? – RamRaider

+0

2017-08-17 comme échoué à la page et copier/coller la sortie –