повторить дату 0, если сумма становится минус

У меня есть следующая функция

function get_designment_info_by_id($id) {
$this->db->where('designment_id', $id);
$designment_info = $this->db->get('designments')->row_array();
$designment_info['image'] = self::get_image_for_designment($id);
$designment_info['count_joined'] = self::get_users_count_joined_by_id($id);
$designment_info['count_ideas'] = self::get_users_count_ideas_by_id($id);
$date_to = $designment_info['date_to'];
$diff = $date_to - now();
$days = round($diff / 86400);
$time_left = $days . ' days';$designment_info['time_left'] = $time_left;
return $designment_info;
}

Теперь в представлении, если дата прошла, будет показано, сколько дней прошло. например, если крайний срок был 02-06-16, он покажет «-4 дня». Как я могу изменить функцию, он будет отображать только ноль «0», если крайний срок прошел.

-1

Решение

Проверьте, является ли он отрицательным перед назначением, затем обнулите его, если так.

$days = round($diff / 86400);
if ($days < 0) $days = 0;
$time_left = $days . ' days';
0

Другие решения

Просто добавьте условие if

function get_designment_info_by_id($id) {
$this->db->where('designment_id', $id);
$designment_info = $this->db->get('designments')->row_array();
$designment_info['image'] = self::get_image_for_designment($id);
$designment_info['count_joined'] = self::get_users_count_joined_by_id($id);
$designment_info['count_ideas'] = self::get_users_count_ideas_by_id($id);
$date_to = $designment_info['date_to'];
$diff = $date_to - now();
$days = round($diff / 86400);
// Add this
if($days < 0){
$days = 0;
}
$time_left = $days . ' days';$designment_info['time_left'] = $time_left;
return $designment_info;
}
0

Всякий раз, когда дата и время манипулируют с помощью магическое число 86400обычно существует риск нежелательных помех DST. Чтобы полностью избежать этого, я написал процесс, использующий DateTime без использования 86400,

// assumes $designment_info['date_to'] is formatted d-m-y from question
$date_to=DateTime::createFromFormat('d-m-y',$designment_info['date_to']);
$date_now=new DateTime("now");
if($date_to<=$date_now){
echo "0 days"; // not yet passed
}else{
$passed=$date_to->diff($date_now)->days;
echo "$passed day",($passed>1?"s":"");  // add plural when needed
}

Вот онлайн демо это показывает $date_to как прежде, равно и после $date_now, (… на сегодня все равно)

0
По вопросам рекламы [email protected]