2013-11-20 3 views
-2

у меня есть код, где он вычтет Total Duration и Total Time, и после того, что результат для вычисления будут преобразованы в считанные секунды ...PHP: Время/HH: минуты: секунды конвертировать в считанные секунды

Предполагая в моем Total Duration является "2:00:00" то для Total Time является "1:30:00"

для вычисления ...

02:00:00 - 01:30:00 = 00:30:00 

тогда за результат, «00:30:00 "будет преобразовано в секунды d результат «1800»

Как его преобразовать?

Спасибо за помощь ...

+0

Если вы используете PHP функции даты/времени, чтобы сделать существующие вычисления, вы уже должны иметь ответ в секундах ... возможно, если вы указали свой код, мы могли бы указать его вам –

+0

Но продолжительность 00:30:00 не 30 секунд, это 30 минут или 1800 секунд –

+0

@ MarkBaker..oh yeh .. им жаль .. отредактировав вопрос – user2826499

ответ

1

Используйте strtotime функция. Он возвращает отметку времени UNIX (количество секунд с 1 января 1970 года 00:00:00). Если вы будете проходить часовой формат HH:MM:SS к нему, вы можете легко сделать математику

$to = strtotime('02:00:00'); 
$from = strtotime('01:30:00'); 

$seconds = $to - $from; // outputs 30 

Вы предположили, что формат minutes:seconds:miliseconds и вы хотели бы получить 30 секунды в вашем случае. Фактически выход 30 минут. Милисекунды разделены точкой.
Ваши часы должны, вероятно, выглядеть следующим образом:

$to = strtotime('00:02:00'); 
$from = strtotime('00:01:30'); 
+0

@Matewka ... hahah извините неправильный тип ... результат должен быть 1800 ... хотя я уже его редактирую..thanks for помощь: D – user2826499

0

Вы можете попробовать это,

$start = '01:30:00'; 
    $end = '02:00:00'; 
    $workingHours = (strtotime($end) - strtotime($start)); 
    $res= date("i", $workingHours); 
    echo "DIFF: ". $res; //OP 30 Minutes 

    echo $resFull= date("H:i:s", $workingHours); //OP 00:30:00 
0

Если вы используете формат HH:MM:SS, то вы можете преобразовать его в секундах на следующий код

$timestr = "00:30:00"; 
$temp = explode(":", $timestr); 
if ($temp && is_array($temp) && count($temp) == 3) { 
    $time = intval($temp[0]) * 3600 + intval($temp[1]) * 60 + intval($temp[1]); 
} else { 
    $time = null; 
} 
1

Как насчет разделения строки времени на три подстроки с помощью функции (возвращает массив подстрок)

$substrings = new Array(); 
$substrings = explode(":", $timeString); 

Теперь массив $ substrings содержит три подстроки (часы, минуты, секунды). можно вычислить секунды, просто перемножения:

$hours = intval($substrings[0]); 
$minutes = intval($substrings[1]); 
$seconds = intval($substrings[2]); 
$seconds = $hours * 3600 + $minutes * 60 + $seconds; 
0

Альтернатива с PHP 5.3:

<?php 

try { 
    $date1 = new DateTime('02:00:00'); 
    $date2 = new DateTime('01:30:00'); 

    $diff = $date1->diff($date2); 

    echo $diff->format('H:i:s'); 


} catch (Exception $e) { 
    echo $e->getMessage(); 
    exit(1); 
} 
Смежные вопросы