私のPHPアプリケーションでは、2つの時間変数の合計を計算したいと思います。私はこの例のようなものを探しています。
$time1 = 15:20:00;
$time2 = 00:30:00;
$time = $time1+$time2;
期待する答えがであり、関数15:50:00
を使用したい場合は、秒を減算して、UNIXタイムスタンプに変換するときに共有する必要があります。strtotime
date
$time1
$time2
$time1 = '15:20:00';
$time2 = '00:30:00';
$time = strtotime($time1) + strtotime($time2) - strtotime('00:00:00');
$time = date('H:i:s', $time);
これを行う最良の方法は、strtotimeを使用してそれらをタイムスタンプに変換してから、一緒に加算することです。
$o = strtotime($time1)+strtotime($time2);
私が正しく覚えていればstrtotime
、このフォーマットをサポートしています。
それ以外の場合は、自分でフィルターで除外する必要があります。
次の答えは正しい値を返しません。整数を合計していますが、正しい時刻は返されません。
$ o = strtotime($ time1)+ strtotime($ time2);
次のように計算時間を取得する関数を作成しました。
public function addTwoTimes($time1 = "00:00:00", $time2 = "00:00:00"){
$time2_arr = [];
$time1 = $time1;
$time2_arr = explode(":", $time2);
//Hour
if(isset($time2_arr[0]) && $time2_arr[0] != ""){
$time1 = $time1." +".$time2_arr[0]." hours";
$time1 = date("H:i:s", strtotime($time1));
}
//Minutes
if(isset($time2_arr[1]) && $time2_arr[1] != ""){
$time1 = $time1." +".$time2_arr[1]." minutes";
$time1 = date("H:i:s", strtotime($time1));
}
//Seconds
if(isset($time2_arr[2]) && $time2_arr[2] != ""){
$time1 = $time1." +".$time2_arr[2]." seconds";
$time1 = date("H:i:s", strtotime($time1));
}
return date("H:i:s", strtotime($time1));
}
PHP5.3を使用できますDateInterval
。
$timeInterval = DateInterval::createFromDateString( '15 hours + 20 minutes' );
$timeInterval2 = DateInterval::createFromDateString( '30 minutes' );
foreach( str_split( 'ymdhis' ) as $prop )
{
$timeInterval->$prop += $timeInterval2->$prop;
}
var_dump( $timeInterval->format( '%H:%i:%s' ) );
(DateIntervalオブジェクトに追加する方法はここで説明されています:PHPで2つの日付間隔を追加する方法)
私の知る限り、Sammayeの答えは私にはうまくいきませんでした。
追加したい時刻をUNIXタイムスタンプの開始で開始する必要がありました。このようにstrtotime
して、最初に追加する必要のある秒を返します。
$time1 = "15:20:00";
$time2 = "1970-01-01 00:30:00";
$time = strtotime($time1) + (strtotime($time2) + 3600);
echo $time . "<br />";
echo date("H:i:s", $time);
関数に入力できるその他の情報については、神秘的なドキュメントhttp://us1.php.net/strtotimeを参照してください:)
$today = time();
$tommorrow = strtotime("+1 days", $today);
$day_after_tomorrow = strtotime("+1 days", $tomorrow);
コード:
$time1 = '15:20:00';
$time2 = '00:30:00';
$time = strtotime($time1)+strtotime($time2);
$sumtime = date("H:i:s",$time);