PHP将两个日期转换为unix时间戳,减去两个时间戳,以秒为单位计算两个日期之间的差值.unxepected结果?<



根据标题,我试图找出秒的差异,然后将这些秒转换为天数和小时。

阅读并遵循类似的问题,我建立了一个函数,将我想要的小时,天,周,月或年添加到今天的日期时间,我从那部分得到正确的结果。

然而,我然后尝试将两个日期(开始日期和转移日期)转换为unix时间戳,减去两个时间戳以秒为单位查找两个日期之间的差异,然后转换为天或分钟(/86400和/3600),我没有得到我预期的结果。

代码如下:

<?php
$dateTimeNow = date();
function dateTimeShift($dateTimeIn, $lengthNum, $lengthWord) {
$shifted = date("Y-m-d H:i:s", strtotime($dateTimeIn." + $lengthNum $lengthWord"));
$difference = strtotime($shifted)-strtotime($dateTimeIn);
return $shifted . " <br> " . floor($difference/86400) . " days or " . floor($difference/3600) . " hours";
}
echo dateTimeShift($dateTimeNow, "1", "day");
?>

结果是当前…

2023-01-04 09:37:51>19361天或464673小时

我期望它是

2023-01-04 09:37:51>1天或24小时

问题是你使用date()函数没有参数,试试这个:

$dateTimeNow = date("Y-m-d H:i:s");
function dateTimeShift($dateTimeIn, $lengthNum, $lengthWord) {
$shifted = date("Y-m-d H:i:s", strtotime($dateTimeIn." + $lengthNum $lengthWord"));
$difference = strtotime($shifted)-strtotime($dateTimeIn);
return $shifted . " <br> " . floor($difference/86400) . " days or " . floor($difference/3600) . " hours";
}
echo dateTimeShift($dateTimeNow, "1", "day");

输出:

2023-01-04 09:57:31 <br> 1 days or 24 hours

最新更新