PHP以秒为单位计算时间

时间:2017-05-22 06:39:39

标签: php date time count format

我看起来很简单,但我无法解决问题。我希望用PHP计算两次($ time + $ time1),但我的结果是+ 1小时(+ 1天)。为什么呢?

$hours="00";
$minutes="34";
$seconds="13";

$hours1="00"; 
$minutes1="35";
$seconds1="11";

$time=($hours*3600)+($minutes*60)+$seconds; // 2053 seconds
$time1=($hours1*3600)+($minutes1*60)+$seconds1; // 2111 seconds

$sum=$time+$time1; // 4164 seconds

$format=date('H:i:s', $time); // 01:34:13
$format1=date('H:i:s', $time1); // 01:35:11
$formatsum=date('H:i:s', $sum); // 02:09:24

$格式必须 00 :34:13不 01 :34:13
如果我添加日期日期('d H:i:s',$ time);结果是 01 01 :34:13
我的任务是00:34:13 + 00:35:11,结果01:09:24不是 02 :09:24
时间格式化有问题吗?为什么它给我+ 1天和+ 1小时的结果?

3 个答案:

答案 0 :(得分:1)

您应该检查您的时区。计算的时间是您当地的时区。例如,

$time=($hours*3600)+($minutes*60)+$seconds; // 2053 seconds
$format=date('H:i:s', $time); // 02:34:13

+ 2GMT

答案 1 :(得分:1)

改变这个:

$format=date('H:i:s', $time); // 01:34:13
$format1=date('H:i:s', $time1); // 01:35:11
$formatsum=date('H:i:s', $sum); // 02:09:24

要:

$format=gmdate('H:i:s', $time); // 00:34:13
$format1=gmdate('H:i:s', $time1); // 00:35:11
$formatsum=gmdate('H:i:s', $sum); // 01:09:24

gmdate - 格式化GMT / UTC日期/时间

php doca gmdate

答案 2 :(得分:0)

结果为01:34:13,因为您的默认时区设置为UTC +1。 如果要将时间戳转换为UTC日期,请使用gmdate()函数而不是date()

$hours = "00";
$minutes = "34";
$seconds = "13";

$hours1 = "00";
$minutes1 = "35";
$seconds1 = "11";

$time = ($hours * 3600) + ($minutes * 60) + $seconds; // 2053 seconds
$time1 = ($hours1 * 3600) + ($minutes1 * 60) + $seconds1; // 2111 seconds

$sum = $time + $time1; // 4164 seconds

$format = gmdate('H:i:s', $time); // 00:34:13
$format1 = gmdate('H:i:s', $time1); // 00:35:11
$formatsum = gmdate('H:i:s', $sum); // 01:09:24

另外,我不确定您希望使用代码实现什么,但是有更好的日期/时间操作工具,而不是手动添加秒。查看PHP标准库中的DateTimeDateInterval类。