Php 以小时和分钟为单位计算两个日期之间的差异
我使用此代码以小时和分钟为单位计算两个日期之间的差异:Php 以小时和分钟为单位计算两个日期之间的差异,php,mysql,date,time,Php,Mysql,Date,Time,我使用此代码以小时和分钟为单位计算两个日期之间的差异: $all = round(($date1timestamp - $date2timestamp) / 60); $d = floor ($all / 1440); $h = floor (($all - $d * 1440) / 60); $m = $all - ($d * 1440) - ($h * 60); 工作非常完美,但当我必须多次计算日期之间的差异时,我必须再次编写代码并更改值。有没有简单的方法可以多次计算而无需再次重写代码??
$all = round(($date1timestamp - $date2timestamp) / 60);
$d = floor ($all / 1440);
$h = floor (($all - $d * 1440) / 60);
$m = $all - ($d * 1440) - ($h * 60);
工作非常完美,但当我必须多次计算日期之间的差异时,我必须再次编写代码并更改值。有没有简单的方法可以多次计算而无需再次重写代码??如果我理解正确,您需要将此代码封装在函数中,然后可以在需要再次使用该函数时调用该函数,而不是重写它
function dateDiffHoursMins($date1timestamp, $date2timestamp)
{
$all = round(($date1timestamp - $date2timestamp) / 60);
$d = floor ($all / 1440);
$h = floor (($all - $d * 1440) / 60);
$m = $all - ($d * 1440) - ($h * 60);
return array('d' => $d, 'h' => $h, 'm' => $m);
}
要使用它,只需调用dateDiffHoursMins()
并将两个时间戳传递给它。它将返回一个数组,因此您可以获取如下值:
$diff = dateDiffHoursMins($time1, $time2);
$hours = $diff['h'];
echo("Hours: " . $hours);
将代码封装在函数中的过程通常被称为保持代码干燥,这是一个缩写,代表“不要重复自己”。这是一个你应该一直努力的目标。它使代码编写更快,调试更容易。想象一下,如果您在一个文件中复制/粘贴了该片段20次,然后在其中发现了一个bug。您必须在所有20个位置修复它,而对于函数,您只需在一个位置修复它。尝试:
功能:
function date_difference ($date1timestamp, $date2timestamp) {
$all = round(($date1timestamp - $date2timestamp) / 60);
$d = floor ($all / 1440);
$h = floor (($all - $d * 1440) / 60);
$m = $all - ($d * 1440) - ($h * 60);
//Since you need just hours and mins
return array('hours'=>$h, 'mins'=>$m);
}
调用函数:
$result = date_difference($date1timestamp, $date2timestamp);
解决这个问题的一个好方法是以秒为单位来思考 第一步是以秒为单位提取SQL中的时间戳差异($dbc是我的数据库连接): 然后把它赋给一个变量
while ($row = mysqli_fetch_array($timeQuery)) {
$totalTime = $row["DIFF"];
然后开始转换:
//Seconds in an hour
$unith =3600;
//Seconds in a minute
$unitm =60;
//Number of hours and then the seconds remaining for minute calc
$hh = intval($totalTime / $unith);
$ss_remaining = ($totalTime - ($hh * 3600));
//Number of minutes and then the seconds remaing
$mm = intval($ss_remaining / $unitm);
$ss = ($ss_remaining - ($mm * 60));
然后你可以这样打印:
$hh . ' : ' . $mm . ' : ' . $ss
让它成为一个带参数的函数你能告诉我怎么做吗?我是php函数的新手。对于用户定义的函数,请参见带优秀答案的伟大问题+1。一个称之为
$difference=dateDiffHoursMins($date1timestamp,$date2timestamp)
的示例。然后,您可以访问$difference['d']
,$difference['h']
和$difference['m']
是的,但我还有$date3timestamp和$date4timestamp,这意味着我每次要计算日期时都必须编写新函数??不,您只需在调用函数时传递时间戳对,例如1352215735(20121101)和135221759(20121105),将函数调用为$result=date_difference(1352215759,1352215735)
。函数的全部目的是多次使用它,而不重复代码。
$hh . ' : ' . $mm . ' : ' . $ss