Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] php|Преобразовать секунды в дату

Ответить
Настройки темы
[решено] php|Преобразовать секунды в дату

Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Вообщем проблема в следующем:
Имеется переменная $All, в ней хранится кол-во секунд (разница между двумя датами)
Нужно преобразовать их в нормальную дату в следующем виде:
PHP код: Выделить весь код

$Year

$Day
$Hour
$Minutes
$Second 

Т.е. ск-ко лет, дней, часов, минут, секунд...
НО $Year+$Day+$Hour+$Minutes+$Second не должно быть равно $All
Уже запарился считать. исписал четыре тетрадных листа.
Пробовал так:
PHP код: Выделить весь код

$Year floor($All/31536000);

$Ost = ($All-($Year*31536000));
$Day floor($Ost/86400);
$Ost = ($Ost-($Day*86400));
$Hour floor($Ost/3600);
$Ost = ($Ost-($Hour*3600));
$Minutes floor($Ost/60);
$Second = ($Ost-($Minutes*60)); 

не пашет...
Помогите пожалуйста, работа стынет...

-------
Хочу научиться писать драйвера на с++


Отправлено: 13:36, 29-12-2009

 

Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Огромнейшее спасибо всем за помощь.
Может кому понадобится нашол ещё один способ:
PHP код: Выделить весь код

$Year floor($All/31536000);
$Xsec $All-$Year*31536000;
$Day floor($Xsec/86400);
$Yday $Xsec-$Day*86400;
$Hour floor($Yday/3600);
$Zhour $Yday-$Hour*3600;
$Minutes floor($Zhour/60);
$Second $Zhour-$Minutes*60

-------
Хочу научиться писать драйвера на с++


Отправлено: 23:19, 29-12-2009 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


PHP код: Выделить весь код

<?php

function duration$date1$date2$if_reached=null )
{
   
$int_seconds strtotime $date2 ) - strtotime $date1 );
   
$key_suffix 's';
   
$periods = array(
                 
#  'year'        => 31557600,   // 1 year = 365.25 day
                   
'year'        => 31536000,    // 1 year = 365 day
                 #  'month'        => 2629800,   // 1 month = 1/12 year
                    
'month'        => 2628000,   // 1 month = 1/12 year
                   
'day'        => 86400,
                   
'hour'        => 3600,
                   
'minute'    => 60,
                   
'second'    => 1
                   
);

   
// used to hide 0's in higher periods
   
$flag_hide_zero true;

   
// do the loop thang
   
foreach( $periods as $key => $length )
   {
       
// calculate
       
$temp floor$int_seconds $length );
       
       
#echo '-'.$temp;

       // determine if temp qualifies to be passed to output
       
if( !$flag_hide_zero || $temp )
       {
           
// store in an array
           
$build[] = $temp.' '.$key.($temp!=1?'s':null);

           
// set flag to false, to allow 0's in lower periods
           
$flag_hide_zero false;
       }

       
// get the remainder of seconds
       
$int_seconds fmod($int_seconds$length);
   }

   
// return output, if !empty, implode into string, else output $if_reached
   
return ( !empty($build) ? implode(', '$build):$if_reached );
}

  echo 
duration ('2009-12-29 16:20:49''2010-12-29 16:21:00');
?>

Но всё-таки есть небольшой косяк, в примере на самом деле разница практически составляет 365 дней. Плюс 11 секунд, но из-за високосных годов год равен не 365 дней, а 365.25. Вот и получилось "11 months, 30 days, 4 hours, 30 minutes, 11 seconds" А так вроде как и ничего, работает

===
Исправил.

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Последний раз редактировалось Igor_I, 30-12-2009 в 00:34.

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:14, 30-12-2009 | #12



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] php|Преобразовать секунды в дату

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Преобразовать *.html в *.mht gora Скриптовые языки администрирования Windows 26 11-04-2013 10:53
[решено] Как преобразовать текстовую формулу в числовой результат malev AutoIt 2 18-09-2009 11:09
[решено] Если LCtrl удерживалась меньше 1 секунды, то действие1, иначе действие2. beve AutoIt 6 28-08-2009 09:37
Разное - [решено] Стал подвисать комп на 2-3 секунды из-за заражения Bester Лечение систем от вредоносных программ 30 01-01-2008 15:24
[решено] Javascript | преобразовать 1154112977 в нормальное число hasherfrog Вебмастеру 3 29-07-2006 01:14




 
Переход