Сумма двух дат в PHP - PullRequest
       22

Сумма двух дат в PHP

2 голосов
/ 08 сентября 2011

как я могу сложить две даты?

У меня есть две даты в этом формате j h: i: s, и я хотел бы суммировать их

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

<?php

/**
 * @author Masino Sinaga, http://www.openscriptsolution.com
 * @copyright October 13, 2009
 */

echo sum_the_time('01:45:22', '17:27:03');  // this will give you a result: 19:12:25

function sum_the_time($time1, $time2) {
  $times = array($time1, $time2);
  $seconds = 0;
  foreach ($times as $time)
  {
    list($hour,$minute,$second) = explode(':', $time);
    $seconds += $hour*3600;
    $seconds += $minute*60;
    $seconds += $second;
  }
  $hours = floor($seconds/3600);
  $seconds -= $hours*3600;
  $minutes  = floor($seconds/60);
  $seconds -= $minutes*60;
  return "{$hours}:{$minutes}:{$seconds}";
}

?>

Использование:

Все, что мне нужно, это сложить две даты из двух задач, например: Задание 1 займет 1 день 10 часов 20 минут 10 секунд Задание 2 займет 3 дня 17 часов 35 минут 40 секунд

Таким образом, результатом будет общее время между задачей 1 и двумя

Ответы [ 2 ]

6 голосов
/ 08 сентября 2011

просто конвертируйте даты, используя strtotime, и суммируйте временные метки, затем снова конвертируйте в дату, используя функцию date:

$tmstamp = strtotime($date1) + strtotime($date2);
echo date("Y m d", $tmstamp) ;

но зачем вам добавлять две даты?

0 голосов
/ 08 сентября 2011

В сущности, они конвертируют часы и минуты в секунды и добавляют их.Затем они конвертируются обратно в часы / минуты.

Вам просто нужно также преобразовать дни в секунды:

$seconds += $days * 3600 * 24 

, а затем преобразовать обратно:

$days = floor($seconds/(3600*24));
$seconds -= $days*3600*24
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...