首页 > 代码库 > 获取明天凌晨的时间戳

获取明天凌晨的时间戳

在一些业务逻辑中,需要在今天获取明天凌晨的时间戳。在网上找了一下别人的写法是这样的

echo strtotime(date(‘Y-m-d‘,strtotime(‘+1 day‘)));

这样的写法是比较保守的做法,阅读起来是先将今天时间戳加一天,然后取年月日,然后转时间戳。

我提出了一种稍微改进的做法

echo strtotime(date("Y-m-d"))+86400;

这样能少调用一次函数实现加一天,毕竟一天的常规情况下是有86400秒的。tips:我记得有一次出现了一分钟61秒的情况 这种情况应该可以忽略。

补充:

世界上有两种时间计量系统:基于地球自转得出的“世界时”和基于原子振荡周期确定的“原子时”。由于两种时间尺度对秒的测量方法不同,随着时间推移,两个时间系统间会出现差异,因此有了“协调世界时”的概念。

“协调世界时”以“原子时”秒长为基础,在时刻上尽量接近“世界时”。1972年,国际计量大会决定,当“世界时”与“原子时”的时刻相差达到0.9秒时,就在“协调世界时”上加上或减去1秒(正闰秒或负闰秒),以尽量接近“世界时”,这就是闰秒。

中国天文学会会员、天津市天文学会理事史志成表示,闰秒一般安排在年中或年末的最后时刻,即6月30日或12月31日的最后一分钟。从1972年到这次的44年间,已经有27次闰秒。最近一次是2015年6月30日。增加闰秒的决定通常提前6个月宣布。

出自 http://www.oushinet.com/international/guojinews/20161231/251172.html

言归正传,我发现我们总是必须要获取年月日Ymd的格式才能取到凌晨,那么如何不调用date函数获取凌晨呢?

这里我想到了余数概念,当时间戳对86400取余的时候不就能得到今天过了多少秒了吗?只要减掉这个时间,再加上一天,就可以获取明天凌晨时间了(东八区还需要减8个小时)

代码如下

$now=time();

echo $now-$now%86400+86400-8*3600;//东八区需要减八小时

下面是代码的执行效率对比

网上提供的方式

技术分享

执行时间

技术分享

我提出的方式

技术分享

 

执行时间

技术分享

 余数改进方式

 技术分享

执行时间

技术分享

如此看来,尽量避免函数的调用是能够提升效率的一个可以尝试的手段 

 

获取明天凌晨的时间戳