14

私は以下のように2つの時間値を持っています

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

特定のユーザーの予定と利用可能な時間を計算するためにこれを行っているので、この方法で試しました

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

しかし、それは$ max_date=2673452280を返しています。

4

7 に答える 7

40

このコードサンプルは1時間かかり、$timeそれに1時間を追加$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);
于 2012-05-11T19:05:23.590 に答える
9

この機能を使用してください...

 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}";
    }
于 2013-07-17T08:09:38.677 に答える
1

strtotime関数は引数としてフルデートを取り、有効な形式は次のとおりです 。http ://www.php.net/manual/en/datetime.formats.php

これは、 http://php.net/manual/en/function.strtotime.phpの関数に関するオンラインPHPマニュアルで確認できます。

于 2012-05-11T19:00:21.373 に答える
1

以前にデータベースからこれらのタイムストリングを構築したことがある場合は、おそらく次のようなものに再構築することをお勧めします。

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

$timestamp = strtotime($time." +".$time2);
$endTime = date("d.m.Y H:i:s", $timestamp);
于 2012-05-11T19:05:03.803 に答える
1

phpを使用して2回追加する最も簡単な方法は、次のとおりです。

1)時間をH:i:s(例:08:15:40)形式から秒に変換します。
2)2回目の値についても同じことを行います。ref:step 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

于 2016-06-18T05:08:00.933 に答える
1

Anudeepのソリューションは私のユースケースには最適でしたが、負の時間を追加できる必要もありました。これは、負の時間文字列(たとえば、「-01:01:01」)を取得して返すための彼のコードのわずかに編集されたバージョンです。

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}";
}
于 2019-03-06T00:58:21.327 に答える
0

あなたはこれを試すことができます

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

?>

2番目のコードでは、時間を時間:分または時間:分:秒で送信できます。このコードは、時間を自動的に変換するため、両方の形式を受け入れます

于 2019-06-07T04:27:59.257 に答える