2016-02-06 4 views
1

Мне нужно рассчитать разницу между двумя полями даты в представлениях Drupal 7. Как это сделать? Установили Views PHP, но не могут понять, как работают поля даты. У меня есть поиск этого и пробовал некоторые фрагменты, но теперь я сдаюсь. Два Поля даты в узле являются: Start: 2016-02-06 7:15 блядь: 2016-02-09 16:15 фрагмент кода я попытался это:Вычислить разницу дат в представлениях Drupal

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

Это только результат 0. Значения для двух переменных равны 4, когда я получаю их в поле представлений PHP? Пробовали и дату и дату (временную метку Unix) с тем же результатом. /Chrotto

ответ

2

Вы можете попробовать что-то вроде этого:

// 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

Thanks, Sor чтобы сказать, что это не сработало. Это швы, чтобы быть чем-то неправильным с значениями поля, заданными переменными Available. У меня есть три поля: start, slut и namn. Когда я их поймаю в PHP-полях, таких как $ row-> field_start, $ row-> field_slut и $ row-> field_namn, вы получите только номер Nid! – Christer

+0

При переносе данных $ data в качестве кода значения, а затем введите print: r ($ data) в качестве выходного кода. Я вижу все, что мне нужно в массиве. – Christer

0

переключаюсь на моей установке Drupal 8 (Shall порт в любом случае) и нашел это на php.net, который работал:

$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

Фактически, это было обработано в часы работы, которые я хотел бы получить, и после некоторого дополнительного рытья я нашел лучший способ сделать это:

$start = strtotime($row->field_start); 
$stop = strtotime($row->field_stop); 
$time_elapsed=$stop-$start; 
$minutes=$time_elapsed/60; 
$hours=$minutes/60; 
echo $hours; 
Смежные вопросы