两个时间戳汇总在一起

时间:2014-09-30 14:20:40

标签: php mysql

如果有人可以帮我解决这个问题,我会发现这很简单,但对于我的生活,我无法找到如何做到这一点,我有两个时间戳,我想把它们加在一起($ timestamp1 + $ timestamp2)我有第一部分想通了,但我不能得到我想要的结果到目前为止我有这个

$flight_time = strtotime($flight_time_1)+strtotime($flight_time_2)+strtotime($flight_time_3)+strtotime($flight_time_4)+strtotime($flight_time_5)+strtotime($flight_time_6)+strtotime($flight_time_7)+strtotime($flight_time_8)+strtotime($flight_time_9)+strtotime($flight_time_10);

$flight_time = date("H:i:s", $flight_time);

这给了我16:20:00的时间,这是完美的 我的第二个代码就是这个

$sqlcow = "SELECT system_flight FROM uav_checks WHERE uav_id = '$registration'";
$result1cow=mysql_query($sqlcow);

while ($arow = mysql_fetch_array($result1cow)){

$system_flight2 = $arow['system_flight'];

}

并且使用此代码我得到28:07:00这是完美的

我需要的是16:20:00 + 28:07:00

然而,当我尝试以各种方式将它们加在一起时,我知道它可能无法正常工作,所以我很难过,请任何人帮助我

谢谢

2 个答案:

答案 0 :(得分:2)

您正在以不打算使用的方式滥用日期/ strtotime系统。 e.g。

strtotime('16:20:00') -> 1412115600
date('r', 1412115600) -> Tue, 30 Sep 2014 16:20:20 

请注意PHP假设您的“下午4:20”实际上是“今天”的一部分。这不是“16小时* 3600秒/小时+20分钟* 60秒/分钟” - > 58800秒。

strtotime('16:20:00') + strtotime('01:02:30')
1412115600 + 1412060523
2824176123
date('r', 2824176123) -> Sun, 29 Jun 2059 23:22:03

考虑如果您的时间字符串加起来超过24小时会发生什么,例如

16:20:00 + 7:40:01 -> 23:60:01 -> 1day 00:00:01

现在,您的H:i:s值将显示00:00:01的时间,这是一个非常短的航班。

您需要手动将时间值转换为秒,例如

(16 * 3600) + (20 * 60) + (0) -> 57600 + 1200 -> 58800
(01 * 3600) + (02 * 60) + (30) -> 3600 + 120 + 30 -> 3750

58800 + 3750 -> 62550

然后回到h:m:s格式:

17:22:30

答案 1 :(得分:0)

总结一下sql查询中的时间戳,因为它会更优化,将datetime转换为unix然后将所有unix时间戳加起来并在php转换为datetime。请参考下面的代码。

$sqlcow = "SELECT SUM(UNIX_TIMESTAMP(system_flight)) 
FROM uav_checks WHERE uav_id = '$registration'";
$result1cow=mysql_query($sqlcow);


while ($arow = mysql_fetch_array($result1cow)){

$system_flight2 = $arow['system_flight'];

}

echo gmdate("H:i:s\Z", $system_flight2);