adding two time values of similar formats using php

前端 未结 7 768
轮回少年
轮回少年 2020-12-03 11:41

i have two time values as give below

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

I am doing this for calculating the appointments and available

相关标签:
7条回答
  • 2020-12-03 12:01

    You can try this

    $time = "04:00:00";
    $time2 = "03:30:00";
    
    $result = date("H:i:s",strtotime($time)+strtotime($time2));
    echo $result;
    

    It gives output 07:30:00 but it does not work sometime in different version of operating system. If you want to get sum of time then you can use this code

    <?php
       function CalculateTime($time1, $time2) {
          $time1 = date('H:i:s',strtotime($time1));
          $time2 = date('H:i:s',strtotime($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}";
        }
    
        $time1= '23:32:05';
        $time2 = '01:29';
        echo CalculateTime($time1,$time2);
    
    ?>
    

    In the second code, you can send time in hour:minutes or hours:minutes:seconds. This code accept both format because it convert time automatically

    0 讨论(0)
  • 2020-12-03 12:10

    Use this function...

     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}";
        }
    
    0 讨论(0)
  • 2020-12-03 12:12

    If you're build those time strings from a database before, you'd probably want to rebuild them to something like this:

    $time = "00:06:58";
    $time2 = "40 minutes";
    
    $timestamp = strtotime($time." +".$time2);
    $endTime = date("d.m.Y H:i:s", $timestamp);
    
    0 讨论(0)
  • 2020-12-03 12:20

    this code sample would take hour in $time and add the hour in $time2 to it

    for example: time=06:58:00, time2=00:40:00, result = 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);
    
    0 讨论(0)
  • 2020-12-03 12:20

    Anudeep's solution was great for my use case, but I needed to be able to add negative times as well. Here's a slightly edited version of his code to take and return negative time strings ("-01:01:01" for example):

    public static function sum_the_times($time1, $time2)
    {
        $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}";
    }
    
    0 讨论(0)
  • 2020-12-03 12:21

    strtotime function takes full-date as an argument and valid format are as following: http://www.php.net/manual/en/datetime.formats.php

    You can see that in online PHP manual for the function at http://php.net/manual/en/function.strtotime.php

    0 讨论(0)
提交回复
热议问题