獲取明天淩晨的時間戳
在一些業務邏輯中,需要在今天獲取明天淩晨的時間戳。在網上找了一下別人的寫法是這樣的
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;//東八區需要減八小時
下面是代碼的執行效率對比
網上提供的方式
執行時間
我提出的方式
執行時間
余數改進方式
執行時間
如此看來,盡量避免函數的調用是能夠提升效率的一個可以嘗試的手段
獲取明天淩晨的時間戳