获取明天凌晨的时间戳
在一些业务逻辑中,需要在今天获取明天凌晨的时间戳。在网上找了一下别人的写法是这样的
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;//东八区需要减八小时
下面是代码的执行效率对比
网上提供的方式
执行时间
我提出的方式
执行时间
余数改进方式
执行时间
如此看来,尽量避免函数的调用是能够提升效率的一个可以尝试的手段
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战