如果有人可以帮我解决这个问题,我会发现这很简单,但对于我的生活,我无法找到如何做到这一点,我有两个时间戳,我想把它们加在一起($ 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
然而,当我尝试以各种方式将它们加在一起时,我知道它可能无法正常工作,所以我很难过,请任何人帮助我
谢谢
答案 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);