標籤:
PHP提供一個很好用的函數mktime()。
你只要按順序傳送給mktime()你希望表示的小時,分鐘,秒數,月份,日期,及年份,
mktime()就會返回該日期自1970年1月1日的總秒數。
擷取2000年1月1日到1970.1.1的總秒數
$y2k = mktime(0,0,0,1,1,2000);
備忘:unix time的紀元時間為啥是1970年1月1日。想過沒。??
很多程式設計語言起源於UNIX系統,而UNIX系統認為1970年1月1日0點是時間紀元,所以我們常說的UNIX時間戳記是以1970年1月1日0點為計時起點時間的。
最初電腦作業系統是32位,而時間也是用32位表示。
System.out.println(Integer.MAX_VALUE);
2147483647
例如。Integer 在JAVA內用32位表示,因此32位能表示的最大值是2147483647。另外1年365天的總秒數是 31536000,2147483647/31536000 = 68.1,也就是說32位能表示的最長時間是68年,從1970年開始的話,加上68.1,實際最終到2038年01月19日03時14分07秒,便會到 達最大時間,過了這個時間點,所有32位作業系統時間便會變為10000000 00000000 00000000 00000000,算下來也就是1901年12月13日20時45分52秒,這樣便會出現時間迴歸的現象,很多軟體便會運行異常了。
到 這裡,我想問題的答案已經顯現出來了,那就是:因為用32位來表示時間的最大間隔是68年,而最早出現的UNIX作業系統考慮到電腦產生的年代和應用的 時限綜合取了1970年1月1日作為UNIX TIME的紀元時間(開始時間),至於時間迴歸的現象相信隨著64為作業系統的產生逐漸得到解決,因為用64位作業系統可以表示到 292,277,026,596年12月4日15時30分08秒,相信我們的N代子孫,哪怕地球毀滅那天都不用愁不夠用了,因為這個時間已經是千億年以後 了。
php mktime()函數