使用php获取两个日期之间的总时间差。

13 浏览
0 Comments

使用php获取两个日期之间的总时间差。

可能是重复问题:

如何使用PHP计算两个日期之间的时间差?

这里我提到了两个时间和日期

2008-12-13 10:42:00

2010-10-20 08:10:00

我想要得到总的时间差,以(h:m:s)的格式。

0
0 Comments

使用PHP中的strtotime函数将时间转换为整数,并进行减法运算即可获取两个日期之间的时间差。

$time1 = strtotime("2008-12-13 10:42:00");
$time2 = strtotime("2010-10-20 08:10:00");
$diff = $time2-$time1;
// 可以通过除以60、60、24等来获得小时、分钟、秒等时间差

感谢大家的宝贵回复。

原因:在PHP中,计算两个日期之间的时间差是一个常见的需求。通过将日期时间转换为整数,可以方便地进行减法运算来获取时间差。

解决方法:使用strtotime函数将日期时间字符串转换为整数表示,并进行减法运算。获取的时间差是以秒为单位的整数。如果需要将时间差转换为小时、分钟、秒等单位,可以通过除以60、60、24等来实现。

0
0 Comments

如果您使用或能够使用PHP 5.3.x或更高版本,您可以使用其DateTime对象功能来计算两个日期之间的总时间差:

$date_a = new DateTime('2010-10-20 08:10:00');
$date_b = new DateTime('2008-12-13 10:42:00');
$interval = date_diff($date_a,$date_b);
echo $interval->format('%h:%i:%s');

您可以以多种方式调整格式,在将日期转换为DateTime对象后,您可以利用许多不同的功能,例如通过常规操作符进行比较。有关更多信息,请参阅手册:http://us3.php.net/manual/en/datetime.diff.php

非常感谢大家宝贵的回复。

实际上,上面的代码是针对PHP 5.3.x或更高版本的。

没错,我想那是一个(非常老旧的)拼写错误。已更新,感谢您提醒!

它只给出了差异,如果我想知道差异是正数还是负数怎么办呢?

您可以使用"%R"格式字符串来表示时间差是正数还是负数;请参阅http://php.net/manual/en/dateinterval.format.php以获取完整的格式选项列表。

0
0 Comments

在上述代码中,使用了strtotime函数来将日期字符串转换为UNIX时间戳,并通过计算两个日期之间的秒数来计算时间差。然后,根据秒数计算出天数、小时数、分钟数和秒数。

然而,这种方法在处理夏令时的日期时存在问题。夏令时会导致时区的时间发生变化,而strtotime函数默认情况下不会考虑时区的变化。因此,当计算夏令时日期之间的时间差时,结果会相差1小时,并且计算出的天数会少1天。

为了解决这个问题,可以使用PHP的DateTime和date_diff函数来计算时间差。这两个函数会考虑时区的变化,因此可以正确计算夏令时日期之间的时间差。

下面是使用DateTime和date_diff函数来计算时间差的示例代码:

$datetime1 = new DateTime("2010-10-20 08:10:00");
$datetime2 = new DateTime("2008-12-13 10:42:00");
$interval = $datetime1->diff($datetime2);
$days = $interval->format('%a');
$hours = $interval->format('%h');
$minutes = $interval->format('%i');
$seconds = $interval->format('%s');

通过使用DateTime和date_diff函数,可以正确计算夏令时日期之间的时间差,并得到正确的天数、小时数、分钟数和秒数。

总结起来,原始代码中的问题是在处理夏令时日期时会导致计算结果错误。解决方法是使用DateTime和date_diff函数来计算时间差,并正确考虑时区的变化。

0