在 PHP 中通过将两个日期转换为 Unix 时间戳来计算时间差(以秒为单位)时出现不可预见的结果。
P粉237029457
P粉237029457 2023-09-03 09:22:01
[PHP讨论组]
<p>根据标题,我试图找到以秒为单位的差异,然后将这些秒转换为天和小时。</p> <p>阅读并遵循类似的问题后,我构建了一个函数,将我想要的小时、天、周、月或年添加到今天的日期时间,并且我从这部分得到了正确的结果。</p> <p>但是,然后我尝试将两个日期(开始日期和移动日期)转换为unix时间戳,减去两个时间戳以找到两个日期之间的差异(以秒为单位),然后转换为天或分钟(/86400和/3600)我没有得到我预期的结果。</p> <p>这是代码..</p> <pre class="brush:php;toolbar:false;">&lt;?php $dateTimeNow = date(); function dateTimeShift($dateTimeIn, $lengthNum, $lengthWord) { $shifted = date(&quot;Y-m-d H:i:s&quot;, strtotime($dateTimeIn.&quot; + $lengthNum $lengthWord&quot;)); $difference = strtotime($shifted)-strtotime($dateTimeIn); return $shifted . &quot; &lt;br&gt; &quot; . floor($difference/86400) . &quot; days or &quot; . floor($difference/3600) . &quot; hours&quot;; } echo dateTimeShift($dateTimeNow, &quot;1&quot;, &quot;day&quot;); ?&gt;</pre> <p>目前的结果是..</p> <blockquote> <p>2023-01-04 09:37:51 > 19361 天或 464673 小时</p> </blockquote> <p>我预计会是这样</p> <blockquote> <p>2023-01-04 09:37:51 > 1 天或 24 小时</p> </blockquote></p>
P粉237029457
P粉237029457

全部回复(1)
P粉769413355

问题是您使用的是不带参数的 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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号