确定经过的时间

时间:2009-09-10 18:47:17

标签: php datetime

我在PHP中有两次,我想确定经过的小时和分钟。例如:

8:30到10:00将是1:30

5 个答案:

答案 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时代之外的日期不再是问题,夏令时,闰年和各种其他时间的奇怪处理。