Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Преобразование времени
 
 автор: antf   (24.04.2015 в 12:34)   письмо автору
 
 

Здравствуйте.
Как преобразовать сообщение?

До полной блокировки системы осталось: 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} мин.";
    } 
?>


Можно проще?

  Ответить  
 
 автор: elenaki   (25.04.2015 в 17:59)   письмо автору
 
   для: antf   (24.04.2015 в 12:34)
 

У меня такое javascript делает. eTimer называется.

  Ответить  
 
 автор: Igorek   (25.04.2015 в 21:10)   письмо автору
 
   для: 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'));

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования