Php 获取两个日期的差值,并计算此间隔之间的小时数
在php中,我必须计算两个日期时间之间的小时数。这两个日期时间分别为分钟和秒,但它们可以忽略。目标是得到小时数的总和。此总和表示出现问题的间隙 你可以在这篇文章中找到一些代码。我必须知道以下几点:Php 获取两个日期的差值,并计算此间隔之间的小时数,php,datetime,Php,Datetime,在php中,我必须计算两个日期时间之间的小时数。这两个日期时间分别为分钟和秒,但它们可以忽略。目标是得到小时数的总和。此总和表示出现问题的间隙 你可以在这篇文章中找到一些代码。我必须知道以下几点: 我的操作是否正确?或者使用函数时是否有问题 像date->diff(像某些月份有30天,而其他月份有31天,或者闰年有问题?) 有没有更简单的方法来计算 日期->差异 为了实现这一目标,我通过以下方式实现: //delete minutes and seconds from datetime ob
//delete minutes and seconds from datetime object
$datetime_start = date("Y-m-d h", strtotime($datetime_start));
$datetime_end = date("Y-m-d h", strtotime($datetime_end));
$datetime_start = $datetime_start.":00:00";
$datetime_end = $datetime_end.":00:00";
//create DateTime object
$datetime_start = new DateTime($datetime_start);
$datetime_end = new DateTime($datetime_end);
//get interval between two dates and fill array
$interval = $datetime_end->diff($datetime_start);
$details = array_intersect_key((array)$interval,array_flip(['y','m','d','h','i','s']));
$sum_of_hours = 0;
if(!empty($details["y"])){
$sum_of_hours = $sum_of_hours + $details["y"] * 365 * 24;
};
if(!empty($details["m"])){
$sum_of_hours = $sum_of_hours + $details["m"] * 30 * 24;
};
if(!empty($details["d"])){
$sum_of_hours = $sum_of_hours + $details["d"] * 24;
};
if(!empty($details["h"])){
$sum_of_hours = $sum_of_hours + $details["h"];
};
示例:
在这些日期“2018-06-30 02:00:05”和“2018-07-01 05:00:10”之间,我有一个间隔1天3小时,结果是27小时
thx帮助您可以将它们转换为unix时间戳,然后相互减去以获得秒差,然后除以
60*60
以获得小时数:
floor(abs($datetime_end->getTimestamp() - $datetime_start->getTimestamp()) / (60 * 60))
这将为您的场景返回27
旁注:为什么要创建$datetime\u start这样复杂的4个步骤?通过将更容易,因为我必须从开始和结束日期删除(修改)分和秒…仍然可以在一行中完成:$start=DateTime::createFromFormat(“Y-m-d H:i:s”,“2018-06-30 02:52:05”)->setTime(2,0,0)代码>->setTime(2,0,0)覆盖我的小时数。我只想用00覆盖分和秒。有办法吗?你可以把时间定下来。不幸的是,没有办法(我能找到)只设置分和秒。
<?php
$datetime1 = date_create('2018-06-30 02:00:05');
$datetime2 = date_create('2018-07-01 05:00:10');
$interval = date_diff($datetime1, $datetime2);
$hours = ($interval->days * 24) + $interval->h; // days to hour diff
echo $hours;