Вопрос по php, datetime – добавление двух значений времени похожих форматов с использованием php

4

у меня есть два значения времени, как указано ниже

$time  = 06:58:00;
$time2 = 00:40:00;

Я делаю это для расчета встреч и доступного времени для конкретного пользователя поэтому я попытался таким образом

$max_date=abs(strtotime($time) + strtotime($time2));

но он возвращает $ max_date = 2673452280 любые предложения, пожалуйста

PHP не имеет литералов даты / времени, последний раз я проверял. Эти значения времени должны иметь кавычки вокруг них. cHao
strtotime() возвращает метку времени Unix для данного строкового значения, например.strtotime("00:40:00"); будет возвращать количество секунд с 1 января 1970 года до «сегодня (время на стороне сервера), 00:40 утра». ccKep

Ваш Ответ

6   ответов
2

вы, вероятно, захотите перестроить их примерно так:

$time = "00:06:58";
$time2 = "40 minutes";

$timestamp = strtotime($time." +".$time2);
$endTime = date("d.m.Y H:i:s", $timestamp);
0

Решение Anudeep отлично подходил для моего случая использования, но мне нужно было уметь добавлять и отрицательные моменты. Вот слегка отредактированная версия его кода, которая принимает и возвращает отрицательные временные строки (например, -01: 01: 01):

{
    $times = array($time1, $time2);
    $seconds = 0;
    $negative = false;
    foreach ($times as $time) {
        list($hour,$minute,$second) = explode(':', $time);
        if(substr($hour,0,1) == '-'){
            $seconds -= substr($hour,1)*3600;
            $seconds -= $minute*60;
            $seconds -= $second;
        } else {
            $seconds += $hour*3600;
            $seconds += $minute*60;
            $seconds += $second;
        }
    }
    if (substr($seconds, 0, 1) == '-') {
        $negative = true;
        $seconds = ($seconds * -1);
    }
    $hours = floor($seconds/3600);
    $seconds -= $hours*3600;
    $minutes  = floor($seconds/60);
    $seconds -= $minutes*60;
    if ($seconds < 9) {
        $seconds = "0".$seconds;
    }
    if ($minutes < 9) {
        $minutes = "0".$minutes;
    }
    if ($hours < 9) {
        $hours = "0".$hours;
    }
    return ($negative ? "-" : "")."{$hours}:{$minutes}:{$seconds}";
}
1

1) Преобразовать время из формата H: i: s (например, 08:15:40) в секунды.
2) сделать то же самое для второго значения ref: шаг 1
3) добавить преобразованные значения и сохранить в нем переменную php
4) Теперь конвертируйте сумму (в секундах) в H: i: s.
 и это работает для меня.

PHP Script:

$str_time ="08:04:40";

$str_time = preg_replace("/^([\d]{1,2})\:([\d]{2})$/", "00:$1:$2", $str_time);

sscanf($str_time, "%d:%d:%d", $hours, $minutes, $seconds);

$hrs_old_seconds = $hours * 3600 + $minutes * 60 + $seconds;

$str_time ="02:10:22";

$str_time = preg_replace("/^([\d]{1,2})\:([\d]{2})$/", "00:$1:$2", $str_time);

sscanf($str_time, "%d:%d:%d", $hours, $minutes, $seconds);

$hrs_toadd_seconds = $hours * 3600 + $minutes * 60 + $seconds;

$hrs_old_int1 = $hrs_old_seconds + $hrs_toadd_seconds;

echo $Total=gmdate("H:i:s", $hrs_old_int1);

Result= :10:15:02

24

$time и добавить час в$time2 к этому

например: время = 06: 58: 00, время2 = 00: 40: 00, результат = 07:38:00

$time = "06:58:00";
$time2 = "00:40:00";

$secs = strtotime($time2)-strtotime("00:00:00");
$result = date("H:i:s",strtotime($time)+$secs);
Вы можете установить часовой пояс непосредственно перед функцией обработки времени или в верхней части вашего скрипта, например:date_default_timezone_set('UTC');
Предупреждение: strtotime () [function.strtotime]: небезопасно полагаться на настройки часового пояса системы. Выrequired использовать настройку date.timezone или функцию date_default_timezone_set (). Если вы использовали какой-либо из этих методов и по-прежнему получаете это предупреждение, вы, скорее всего, неправильно написали идентификатор часового пояса. Мы выбрали «Америка / Нью-Йорк» для "EDT / -4,0 / DST"; вместо этого в строке 3
1

мый формат: http://www.php.net/manual/en/datetime.formats.php

Вы можете увидеть это в онлайн-руководстве по PHP для функции наhttp://php.net/manual/en/function.strtotime.php

5

 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;
      if($seconds < 9)
      {
      $seconds = "0".$seconds;
      }
      if($minutes < 9)
      {
      $minutes = "0".$minutes;
      }
        if($hours < 9)
      {
      $hours = "0".$hours;
      }
      return "{$hours}:{$minutes}:{$seconds}";
    }

Похожие вопросы