уменьшение времени

12
L
На сайте с 03.02.2009
Offline
66
826

//1

$time_1='22:11:50';
$time_2='22:12:50';


$time=$time_2-$time_1;
echo $time;

Результат:0

//2

$time_1='21:12:50';
$time_2='23:12:50';


$time=$time_2-$time_1;
echo $time;

Результат:2

Получается, что вычитаются только часы. а мне важны часы, минуты и секунды....

Как сделать так, чтобы всё считалось по человечиски.

L
На сайте с 03.02.2009
Offline
66
#1

Такой вариант...., только слишком много действий (

//первое значение

$time_1='22:31:50';
$chars = preg_split('/:/', $time_1, PREG_SPLIT_OFFSET_CAPTURE);

$chars[0]=$chars[0]*60*60;
$chars[1]=$chars[1]*60;
//приводим к секундам
$chars_all[1]=$chars[0]+$chars[1]+$chars[2];


//второе значение
$time_2='22:12:20';
$chars = preg_split('/:/', $time_2, PREG_SPLIT_OFFSET_CAPTURE);

$chars[0]=$chars[0]*60*60;
$chars[1]=$chars[1]*60;
//приводим к секундам
$chars_all[2]=$chars[0]+$chars[1]+$chars[2];



//вычитаем одно из другого
$itog_sec=$chars_all[1]-$chars_all[2];

//смотрим сколько минут
$itog_min_=$itog_sec/60;
//сколько целых минут
$itog_min= floor($itog_min_);
echo '<br>';
echo $itog_min;
//находим минуты
$itog_sec_=$itog_sec-($itog_min*60);


echo '<br>';
echo '<br>';
echo 'минут:'.$itog_min.' секунд: '.$itog_sec_;
DP
На сайте с 24.04.2012
Offline
16
#2


<?
$time_1 = new DateTime('22:11:50');
$time_2 = new DateTime('22:13:50');
$interval = $time_1->diff($time_2);
echo $interval->format('%H часов %I минут %S секунд');
?>
L
На сайте с 03.02.2009
Offline
66
#3

fuck !!!!! )))))

---------- Добавлено 20.05.2012 в 08:46 ----------

не функцианирует.....

$time_1 = new DateTime('22:11:50');
$time_2 = new DateTime('22:13:50');
$interval = $time_1->diff($time_2);
echo $interval->format('%H часов %I минут %S секунд');
DP
На сайте с 24.04.2012
Offline
16
#4

Я проверил, все работает.

L
На сайте с 03.02.2009
Offline
66
#5

блин.. у меня нифига не работает ((((

есть ещё какие - то варианты ?

или может что исправить ?

Dreammaker
На сайте с 20.04.2006
Offline
569
#6
Liave:
или может что исправить ?

Так попробуйте:


<?php
$time_1 = new DateTime('22:11:50', new DateTimeZone('Europe/Moscow'));
$time_2 = new DateTime('22:13:50', new DateTimeZone('Europe/Moscow'));
$interval = $time_1->diff($time_2);
echo $interval->format('%H часов %I минут %S секунд');
?>
DP
На сайте с 24.04.2012
Offline
16
#7

Тут стандартное использование встроенного класса, не вижу причин не работать. Создайте отдельный файл только с этим кодом. Какой результат его работы?

n0name
На сайте с 22.12.2006
Offline
54
#8

$time_1 = strtotime('22:11:50'); 

$time_2 = strtotime('23:12:50');


$time=$time_2-$time_1;
echo $time;
Сервис сравнения цена на VPS (http://vpska.com/)
Dreammaker
На сайте с 20.04.2006
Offline
569
#9

developer_php, у меня материлось на таймзоны, пока не изменил код на тот, который написал выше.

O
На сайте с 29.05.2008
Offline
195
#10

Можно сделать с помощью массивов. В итоге как-то так:

echo = time[0][0]-time[1][0].':'.time[0][1]-time[1][1].':'.time[0][2]-time[1][2]

Ну или метод с конвертацией.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий