我看起来很简单,但我无法解决问题。我希望用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小时的结果?
答案 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日期/时间
答案 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标准库中的DateTime和DateInterval类。