Таймер обратного отсчета Modx

У меня есть следующий код во фрагменте:

<?php
$resource = $modx->getObject('modResource', $id);
if(!$resource) return;
$date = $resource->getTVValue('timerData');
$remaining = $date - time();
$days_remaining = floor($remaining / 86400);
$hours_remaining = floor(($remaining % 86400) / 3600);
return $modx->getChunk($tpl, array('days' => $days_remaining, 'hours' => $hours_remaining));

$date получает свое значение из timerData, которая является переменной шаблона и, таким образом, регулируется пользователями. Я установил ввод и вывод на сегодняшний день, но в результате я получаю таймер, который отсчитывает от -15000+ дней и часов. Как это произошло? Он отлично работает без телевизора, но с ним невозможно справиться без погружения в код. Любые предложения/решения будут оценены. Ура Марко

Фактический ввод tv return: 2014-07-10 00:00:00, тогда как часть сценария возвращает: -15832 дня и -13 часов (дни и часы записываются вручную, поскольку фактические значения равны $days и $hours из php-скрипта)


person Marco Geertsma    schedule 06.05.2013    source источник
comment
В каком формате хранится timerData? Как временная метка UNIX или как буквальная дата-время?   -  person feeela    schedule 06.05.2013


Ответы (1)


Просто преобразуйте телевизионный ввод в метку времени:

$date = $resource->getTVValue('timerData');
list ($d, $m, $Y, $H, $M, $S) = sscanf($date, "%2d-%2d-%4d %2d:%2d:%2d");
$date = mktime($H, $M, $S, $m, $d, $Y); 
person Vasis    schedule 06.05.2013
comment
Почему бы вам просто не использовать $date = strtotime($date)? - person Mark Hamstra; 13.05.2013