目录

PHP计算当天剩余秒数最方便和最快的方法

结论推导

一、结论

# 最方便
echo strtotime('23:59:59') - time();

#最快
echo 86400 - (time() + 28800) % 86400;

二、推导过程

用 86400 减去今天已经过去了多少秒,即可求得今天还剩多少秒。

86400=24*3600,即一天的总秒数。

28800=8*3600,即 8 个小时的总秒数。

当前时间戳取模 86400 并不是今天已经过去了多少秒,因为时间戳起始时间并不是 0 点,而是 8 点整。所以,如果当前是早上 8 点整,取模 86400 后会等于 0,与我们的本意不符(求今天已经过去了多少秒)。

因此,要用当前时间戳加上 8 个小时的总秒数后再取模 86400,即可求得今天过去了多少秒。

结论是由下面的算法简化后得到的:

86400 - (time() + 8 * 3600) % 86400

三、REF

https://segmentfault.com/a/1190000019844608