<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 文章开始之前的无关内容</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"这是一段和正文没关系的提示文字。"</span></span><span>;
</span><span><span class="hljs-comment">// 分隔线</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<hr>"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<h1>怎么用 gmmktime 函数计算两个时间点之间的差值?一步步教你</h1>
<p>在 PHP 中,<code></span><span><span class="hljs-title function_ invoke__">gmmktime</span></span><span>()
与 mktime() 不同的是,gmmktime() 不受本地时区影响,而是以 UTC 时间为基准,这样在涉及跨时区的应用时更为精准。
假设我们要计算 2023 年 1 月 1 日 00:00:00 和 2023 年 2 月 1 日 00:00:00 之间的差值,可以这样写:
<?php
</span><span><span class="hljs-variable">$time1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gmmktime</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2023</span></span><span>);
</span><span><span class="hljs-variable">$time2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gmmktime</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2023</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"第一个时间戳: <span class="hljs-subst">$time1</span></span></span><span><br>";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"第二个时间戳: <span class="hljs-subst">$time2</span></span></span><span><br>";
?>
两个 Unix 时间戳相减,就能得到它们之间的秒数差:
<?php
</span><span><span class="hljs-variable">$diff</span></span><span> = </span><span><span class="hljs-variable">$time2</span></span><span> - </span><span><span class="hljs-variable">$time1</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"两个时间相差的秒数为: <span class="hljs-subst">$diff</span></span></span><span> 秒";
?>
如果我们更关心天数,可以把秒数换算为天数:
<?php
</span><span><span class="hljs-variable">$days</span></span><span> = </span><span><span class="hljs-variable">$diff</span></span><span> / (</span><span><span class="hljs-number">60</span></span><span> * </span><span><span class="hljs-number">60</span></span><span> * </span><span><span class="hljs-number">24</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"两个时间相差 <span class="hljs-subst">$days</span></span></span><span> 天";
?>
完整的代码如下:
<?php
</span><span><span class="hljs-variable">$time1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gmmktime</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2023</span></span><span>);
</span><span><span class="hljs-variable">$time2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gmmktime</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2023</span></span><span>);
</span><span><span class="hljs-variable">$diff</span></span><span> = </span><span><span class="hljs-variable">$time2</span></span><span> - </span><span><span class="hljs-variable">$time1</span></span><span>;
</span><span><span class="hljs-variable">$days</span></span><span> = </span><span><span class="hljs-variable">$diff</span></span><span> / (</span><span><span class="hljs-number">60</span></span><span> * </span><span><span class="hljs-number">60</span></span><span> * </span><span><span class="hljs-number">24</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"从 2023-01-01 到 2023-02-01 共相差: <br>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$diff</span></span></span><span> 秒<br>";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$days</span></span></span><span> 天";
?>
通过 gmmktime(),我们能够轻松获取 GMT 时间戳,并通过相减来计算两个时间点之间的差值。换算后,我们就能得到秒、分钟、小时甚至天数,非常适合做时间差的计算。如果你在项目中遇到类似需求,不妨尝试用这种方法来实现。