使用php添加两个类似格式的时间值

使用php添加两个类似格式的时间值,php,datetime,Php,Datetime,我有两个时间值,如下所示 $time = 06:58:00; $time2 = 00:40:00; 我这样做是为了计算特定用户的约会和可用时间 所以我试着这样做 $max_date=abs(strtotime($time) + strtotime($time2)); 但它正在返回$max_date=2673452280 任何建议plsstrotime函数都将完整日期作为参数,有效格式如下: 您可以在的函数的联机PHP手册中看到,如果您以前是从数据库中构建这些时间字符串,您可能希望将它们重

我有两个时间值,如下所示

$time  = 06:58:00;
$time2 = 00:40:00;
我这样做是为了计算特定用户的约会和可用时间 所以我试着这样做

$max_date=abs(strtotime($time) + strtotime($time2));
但它正在返回$max_date=2673452280
任何建议pls

strotime函数都将完整日期作为参数,有效格式如下:


您可以在

的函数的联机PHP手册中看到,如果您以前是从数据库中构建这些时间字符串,您可能希望将它们重新构建为如下内容:

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

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

此代码示例将花费
$time
中的小时,并将
$time2
中的小时添加到该示例中

例如: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);
使用此功能

 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}";
    }
函数求和时间($time1,$time2){
$times=数组($time1,$time2);
$seconds=0;
foreach($倍于$时间)
{
列表($hour,$minute,$second)=分解(“:”,$time);
$seconds+=$hour*3600;
$seconds+=$minute*60;
$seconds+=$second;
}
$hours=地板($seconds/3600);
$seconds-=$hours*3600;
$分钟=地板($秒/60);
$seconds-=$minutes*60;
如果($s<9)
{
$seconds=“0”。$seconds;
}
如果($分钟<9)
{
$minutes=“0”。$minutes;
}
如果($小时<9)
{
$hours=“0”。$hours;
}
返回“{$hours}:{$minutes}:{$seconds}”;
}

使用php添加两次的最简单方法是:

1) 将时间从H:i:s(例如08:15:40)格式转换为秒。
2) 对第二时间值ref执行相同操作:步骤1
3) 添加转换后的值并将其存储在php变量中
4) 现在将总计(以秒为单位)转换为H:i:s
这对我很有用

PHP脚本:

$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);
结果=:10:15:02

对于我的用例来说非常好,但我还需要能够添加负时间。下面是他的代码的一个稍加编辑的版本,用于获取并返回负时间字符串(“例如-01:01:01”):

公共静态函数求和次数($time1,$time2)
{
$times=数组($time1,$time2);
$seconds=0;
$negative=假;
foreach($倍于$时间){
列表($hour,$minute,$second)=分解(“:”,$time);
如果(substr($hour,0,1)='-'){
$seconds-=substr($hour,1)*3600;
$seconds-=$minute*60;
$seconds-=$second;
}否则{
$seconds+=$hour*3600;
$seconds+=$minute*60;
$seconds+=$second;
}
}
如果(substr($seconds,0,1)='-'){
$negative=true;
$seconds=($seconds*-1);
}
$hours=地板($seconds/3600);
$seconds-=$hours*3600;
$分钟=地板($秒/60);
$seconds-=$minutes*60;
如果($s<9){
$seconds=“0”。$seconds;
}
如果($分钟<9){
$minutes=“0”。$minutes;
}
如果($小时<9){
$hours=“0”。$hours;
}
返回($negative?”-“:”)。“{$hours}:{$minutes}:{$seconds}”;
}
您可以试试这个

$time = "04:00:00";
$time2 = "03:30:00";

$result = date("H:i:s",strtotime($time)+strtotime($time2));
echo $result;
它给出07:30:00的输出,但在不同版本的操作系统中有时不起作用。如果您想得到时间的总和,那么可以使用以下代码

<?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);

?>


在第二个代码中,可以以小时:分钟或小时:分钟:秒为单位发送时间。这段代码接受这两种格式,因为它自动转换时间

PHP没有日期/时间文本,我上次检查时。这些时间值周围应该有引号。
strotime()
返回给定字符串值的unix时间戳,例如
strotime(“00:40:00”)
将返回从1970年1月1日到“今天(服务器端时间),00:40 AM”的秒数。警告:strotime()[function.strotime]:依赖系统的时区设置是不安全的。您需要使用date.timezone设置或date\u default\u timezone\u set()函数。如果您使用了这些方法中的任何一种,但仍然收到此警告,则很可能是您拼错了时区标识符。我们为“EDT/-4.0/DST”选择了“美国/纽约”,而不是在第3行。您可以在时间处理功能之前或在脚本顶部设置时区,例如:
date\u default\u timezone\u set('UTC')如果总数超过24小时,则此项不起作用。
<?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);

?>