как получить php общее время? - PullRequest
1 голос
/ 16 декабря 2009

Я создал программу общего времени работы в PHP - укажите время ввода - 1,30, 2,10, 1,40 и получите время вывода - 4,80 (8 часов). но мне нужно время выхода - 5.20 (8.40 часов). Примечания: 1,30 + 2,10 + 1,40 = 4,80 (8 часов), но мне нужно 5,20 (8,40 часа). пожалуйста, помогите мне ...

Ответы [ 4 ]

2 голосов
/ 16 декабря 2009

1,30 + 2,10 + 1,40 неправильно. Должно быть:

((1 * 60) + 30) + ((2 * 60) + 10) + ((1 * 60) + 40) = 320 (минут)

320 минут = 5 часов 20 минут.

0 голосов
/ 16 декабря 2009

Для каждого номера (обозначенного $t ниже) вы можете сделать это:

// start with $total=0
$hours = floor($t); // 1.10 -> 1 hr
$minutes = ($t - $hours) * 100; // 1.10 -> 10 mins
$total += ($hours * 60) + $minutes;

Это дает вам общее количество минут. Чтобы получить часы / минуты отдельно, сделайте это:

$total_mins = $total % 60; // 130 -> 10 mins
$total_hours = ($total - $total_mins) / 60; // 130 -> 2 hrs
0 голосов
/ 16 декабря 2009

Выдержка из PHP сайта для вашего удовольствия:

function AddTime ($oldTime, $TimeToAdd) { 
  $pieces = split(':', $oldTime); 
  $hours=$pieces[0]; 
  $hours=str_replace("00","12",$hours); 
  $minutes=$pieces[1]; 
  $seconds=$pieces[2]; 
  $oldTime=$hours.":".$minutes.":".$seconds; 

  $pieces = split(':', $TimeToAdd); 
  $hours=$pieces[0]; 
  $hours=str_replace("00","12",$hours); 
  $minutes=$pieces[1]; 
  $seconds=$pieces[2]; 

  $str = $minutes." minute ".$seconds." second" ; 
  $str = "01/01/2000 ".$oldTime." am + ".$hours." hour ".$minutes." minute ".$seconds." second" ; 

  if (($timestamp = strtotime($str)) === false) { 
    return false; 
  } else { 
    $sum = date('h:i:s', $timestamp); 
    $pieces = split(':', $sum); 
    $hours = $pieces[0]; 
    $hours = str_replace("12", "00", $hours); 
    $minutes = $pieces[1]; 
    $seconds = $pieces[2]; 
    $sum = $hours.":".$minutes.":".$seconds;
    return $sum; 
  } 
} 

$firstTime  = "00:03:12"; 
$secondTime = "02:04:34"; 

$sum=AddTime($firstTime, $secondTime); 

if($sum != false) { 
  echo $firstTime." + ".$secondTime." = ".$sum; 
} else { 
  echo "failed"; 
} 

Выход:

00:03:12 + 02:04:34 = 02:07:46
0 голосов
/ 16 декабря 2009

Вам нужно отслеживать минуты и секунды отдельно:

$minutes = array();
$seconds = array();
foreach ($times as $time) {
    $parts = explode('.', $time);
    $minutes[] = $time[0];
    $seconds[] = $time[1];
}
$total_minutes = array_sum($minutes);
$total_seconds = array_sum($seconds);
while ($total_seconds > 60) {
    $total_minutes++;
    $total_seconds -= 60;
}
echo $total_minutes . ' minutes and ' . $total_seconds . ' seconds';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...