|
|
|
| Здравствуйте.
Как преобразовать сообщение?
До полной блокировки системы осталось: 53:47:42
|
в
До полной блокировки системы осталось: 2 дня, 5 часов, 47 минут
|
Я делаю так:
<?php
$gl_tasks_block_delay = '53:47:42';
preg_match("#([0-9]{2}):([0-9]{2}):([0-9]{2})#", $gl_tasks_block_delay, $matches);
$hours = $matches[1];
$minutes = $matches[2];
$gl_tasks_block_delay_msg = "У вас есть просроченные невыполненные задачи.";
$days = floor($hours / 24);
if($days)
{
$hours = $hours - $days * 24;
$gl_tasks_block_delay_msg .= "\\nДо полной блокировки системы осталось: {$days} дн. {$hours} час.";
}
else
{
$gl_tasks_block_delay_msg .= "\\nДо полной блокировки системы осталось: {$hours} час. {$hours} мин.";
}
?>
|
Можно проще? | |
|
|
|
|
|
|
|
для: antf
(24.04.2015 в 12:34)
| | У меня такое javascript делает. eTimer называется. | |
|
|
|
|
|
|
|
для: antf
(24.04.2015 в 12:34)
| | На основе http://php.net/manual/ru/dateinterval.format.php#113204
<?php
class DateIntervalEnhanced extends DateInterval {
public function recalculate()
{
$from = new DateTime;
$to = clone $from;
$to = $to->add($this);
$diff = $from->diff($to);
foreach ($diff as $k => $v) $this->$k = $v;
return $this;
}
}
$gl_tasks_block_delay = '53:47:42';
list($hours, $mins) = explode(':', $gl_tasks_block_delay);
$di = new DateIntervalEnhanced("PT{$hours}H{$mins}M");
var_dump($di->recalculate()->format('%d days, %h hours, %i mins'));
|
| |
|
|
|