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

Компьютерный форум 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

 

Deadooshka


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

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


Годы считаются только с учетом реальных дат (нужно учитывать високосные годы). Так что считайте исходя из дней (там все четко 24 часа). А уже в конце расчетов можно годы из дней примерно подсчитать (~365.25 дня вроде). Т.е. сразу с all/86400 начните...

Отправлено: 14:27, 29-12-2009 | #2



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

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


Аватара для morgan1991

Старожил


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

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


Sham, не, здесь это не важно, возьмём год за 365 дней...

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


Отправлено: 14:41, 29-12-2009 | #3


Deadooshka


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

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


Цитата morgan1991:
Имеется переменная $All, в ней хранится кол-во секунд (разница между двумя датами) »
Цитата morgan1991:
не, здесь это не важно, возьмём год за 365 дней »
all - это разница между двумя реальными датами, поэтому таки важно. Вы не сможете сказать, сколько лет содержится в этом all, потому что не имеете данных о високосных годах в этом промежутке all.

в целом в расчетах не вижу ошибок (только скобки в арифметических действиях необязательны - php понимает приоритеты)...

Отправлено: 15:07, 29-12-2009 | #4


Аватара для morgan1991

Старожил


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

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


Цитата Sham:
поэтому таки важно »
мне сейчас главное вывести формулу, а потом уже сделаю с проверкой на год...
Цитата Sham:
в целом в расчетах не вижу ошибок »
вот и я не вижу, а считает не правильно...

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


Отправлено: 15:47, 29-12-2009 | #5


Deadooshka


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

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


Цитата morgan1991:
а считает не правильно... »
приведите исходные данные и результаты

Отправлено: 16:12, 29-12-2009 | #6


Аватара для morgan1991

Старожил


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

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


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

<?php

function DifferenceDate($Date1$Date2)
{
$TempDatePart explode('-'$Date1);
$DateMas1[0] = $TempDatePart[0];
$DateMas1[1] = $TempDatePart[1];
$TempDatePart explode(' '$TempDatePart[2]);
$DateMas1[2] = $TempDatePart[0];
$TempDatePart explode(':'$TempDatePart[1]);
$DateMas1[3] = $TempDatePart[0];
$DateMas1[4] = $TempDatePart[1];
$DateMas1[5] = $TempDatePart[2];

$TempDatePart explode('-'$Date2);
$DateMas2[0] = $TempDatePart[0];
$DateMas2[1] = $TempDatePart[1];
$TempDatePart explode(' '$TempDatePart[2]);
$DateMas2[2] = $TempDatePart[0];
$TempDatePart explode(':'$TempDatePart[1]);
$DateMas2[3] = $TempDatePart[0];
$DateMas2[4] = $TempDatePart[1];
$DateMas2[5] = $TempDatePart[2];

$timestamp1 = (mktime($DateMas1[3], $DateMas1[4], $DateMas1[5], $DateMas1[1],  $DateMas1[2],  $DateMas1[0]));
$timestamp2 = (mktime($DateMas2[3], $DateMas2[4], $DateMas2[5], $DateMas2[1], $DateMas2[2], $DateMas2[0]));
$All $timestamp1 $timestamp2;

$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));


$Massive[0] = $Year;
$Massive[1] = $Day;
$Massive[2] = $Hour;
$Massive[3] = $Minutes;
$Massive[4] = $Second;
return 
$Massive;
}
$Massives DifferenceDate('2009-12-29 16:20:49''2009-12-30 13:04:00');
echo 
"У вас осталось:<br>";
echo 
"Лет ".$Massives[0].", ";
echo 
"Дней ".$Massives[1].", ";
echo 
"Часов ".$Massives[2].", ";
echo 
"Минут ".$Massives[3].", ";
echo 
"Секунд ".$Massives[4];
?>

Выводит:
Код: Выделить весь код
У вас осталось:
Лет -1, Дней 364, Часов 3, Минут 16, Секунд 49

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


Отправлено: 16:22, 29-12-2009 | #7


Deadooshka


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

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


а если параметры местами поменять?

Цитата morgan1991:
$All = $timestamp1 - $timestamp2; »
нужно вычитать из большего меньшее (или по модулю брать)

Последний раз редактировалось Sham, 29-12-2009 в 17:48. Причина: из большего меньшее :)


Отправлено: 17:35, 29-12-2009 | #8


Аватара для morgan1991

Старожил


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

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


Цитата Sham:
нужно вычитать из большего меньшее (или по модулю брать) »
дак и так и так пробовал, результат не меняется...

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


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


Deadooshka


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

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


у меня работает, только $All в модуль возьмите...

Код: Выделить весь код
У вас осталось:
Лет 0, Дней 0, Часов 20, Минут 43, Секунд 11
Это сообщение посчитали полезным следующие участники:

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



Компьютерный форум 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




 
Переход