我在PHP中有两次,我想确定经过的小时和分钟。例如:
8:30到10:00将是1:30
答案 0 :(得分:3)
解决方案可能是使用strtotime
将您的日期/时间转换为时间戳:
$first_str = '8:30';
$first_ts = strtotime($first_str);
$second_str = '10:00';
$second_ts = strtotime($second_str);
然后,做差异:
$difference_seconds = abs($second_ts - $first_ts);
并在几分钟或几小时内得到结果:
$difference_minutes = $difference_seconds / 60;
$difference_hours = $difference_minutes / 60;
var_dump($difference_minutes, $difference_hours);
你会得到:
int 90
float 1.5
您现在需要了解的是如何显示; - )
(在多思考之后编辑)
显示差异的可能性可能是使用date功能;这样的事情应该做:
date_default_timezone_set('UTC');
$date = date('H:i', $difference_seconds);
var_dump($date);
我得到了:
string '01:30' (length=5)
请注意,在我的系统上,我必须使用date_default_timezone_set
将时区设置为UTC - 否则,我得到“02:30”,而不是“01:30” - 可能是因为我在法国,FR是我系统的地方......
答案 1 :(得分:1)
您可以使用the answer to this question将时间转换为整数值,然后进行减法。从那里你会想要将结果转换为单位 - 小时 - 分钟,但这不应该太难。
答案 2 :(得分:0)
使用php时间戳作业:
echo date("H:i:s", ($end_timestamp - $start_timestamp));
答案 3 :(得分:0)
$time1='08:30';
$time2='10:00';
list($h1,$m1) = explode(':', $time1);
list($h2,$m2) = explode(':', $time2);
$time_diff = abs(($h1*60+$m1)-($h2*60+$m2));
$time_diff = floor($time_diff/60).':'.floor($time_diff%60);
echo $time_diff;
答案 4 :(得分:0)
$d1=date_create()->setTime(8, 30);
$d2=date_create()->setTime(10, 00);
echo $d1->diff($d2)->format("%H:%i:%s");
上面使用了新的(ish)DateTime和DateInterval类。这些类的主要优点是Unix时代之外的日期不再是问题,夏令时,闰年和各种其他时间的奇怪处理。