2016-02-06 1 views
1

Je dois calculer la différence entre deux champs Date dans Drupal 7 vues. Comment est-ce que je fais ceci? Avoir installé PHP vues, mais ne peut pas comprendre comment les champs de date fonctionne. J'ai cherché ceci et ai essayé quelques extraits mais maintenant j'abandonne. Les deux champs de date dans le nœud sont: Début: 06/02/2016 07:15 Slut: 09/02/2016 16:15 L'extrait de code que j'ai essayé est:Calculer la différence de date dans les vues Drupal

$start=$row->field_start; 
$slut=$row->field_slut; 
$diff=$slut-$start; 
print_r($diff); 

Cela ne résultat dans 0. Les valeurs pour les deux variables sont à la fois 4 quand je les obtiens dans le champ PHP vues? Avoir essayé la date et la date (horodatage Unix) avec le même résultat. /Chrotto

Répondre

2

Vous pouvez essayer quelque chose comme ceci:

// make sure the values you are getting here are correct 
$start_value = $row->field_start; 
$end_value = $row->field_slut; 

$start_date = new DateObject($start_value); 
$end_date = new DateObject($end_value); 
$duration = $start_date->diff($end_date); 
+0

Merci, Sor Cela ne fonctionne pas. Il semble que quelque chose ne va pas avec les valeurs de champ données par les variables disponibles. J'ai trois champs: start, slut et namn. Quand je les attrape dans des champs PHP comme $ row-> field_start, $ row-> field_slut et $ row-> field_namn, tous livrent seulement le numéro Nid! – Christer

+0

Lorsque vous mettez return $ data comme code de valeur et que vous placez print: r ($ data) comme code de sortie, je vois tout ce dont j'ai besoin dans un tableau. – Christer

0

je passe à mon installation Drupal 8 (doit le port de toute façon) et trouvé sur php.net qui a fonctionné:

$datetime1 = date_create($row->field_start); 
$datetime2 = date_create($row->field_stop); 
$interval = date_diff($datetime1, $datetime2); 
echo $interval->format('%a days %h hours och %i minuts'); 
0

En fait, il a été travaillé heures que je veux obtenir et après quelques creuser plus, j'ai trouvé une meilleure façon de le faire:

$start = strtotime($row->field_start); 
$stop = strtotime($row->field_stop); 
$time_elapsed=$stop-$start; 
$minutes=$time_elapsed/60; 
$hours=$minutes/60; 
echo $hours;