1. 程式人生 > >獲取明天淩晨的時間戳

獲取明天淩晨的時間戳

tips 能夠 中國 target new jin 發現 今天 htm

在一些業務邏輯中,需要在今天獲取明天淩晨的時間戳。在網上找了一下別人的寫法是這樣的

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;//東八區需要減八小時

下面是代碼的執行效率對比

網上提供的方式

技術分享

執行時間

技術分享

我提出的方式

技術分享

執行時間

技術分享

余數改進方式

技術分享

執行時間

技術分享

如此看來,盡量避免函數的調用是能夠提升效率的一個可以嘗試的手段

獲取明天淩晨的時間戳