在PHP中默認設置是標准的格林威治時間(零時區),所以如果要獲得本地時間必須修改PHP的默認時區(八時區,除非您是外國的朋友,我想很少吧)。
PHP系統時區設置
修改PHP系統時區的兩種方式:
1、修改php.ini文件中的設置,找到[date]下的“;date.timezone=”,將該項修改為date.timezone=Asia/Hong_Kong (PRC 中國時間),然後重新啟動Apache服務器。
2、在應用程序中,使用時間日期函數之前添加“date_default_timezone_set(“Asia/Hong_Kong”)”函數
修改php.ini文件後獲取本地時間:
php代碼:
- <?php
- echo “現在是北京時間:”.date(“Y-m-d H:i:s”).”<p>”;
- ?>
顯示結果:
現在是北京時間:2010-11-30 20:50:03 (與本地時間相符)
php.ini修改後的代碼:
- [Date]
- ; Defines the default timezone used by the date functions
- ; http://php.net/date.timezone
- date.timezone = PRC
Zero希望大家按照上面的方法去設置本地時區,要注意的是修改的php.ini文件必須是當前服務器所加載的php.ini文件。
PHP中比較兩個時間的大小
在日常生活中我們要經常比較時間的早晚,對於我們來說判斷時間的大小很簡單。但是時間的比較不只是單純的數字大小的比較,因此相對來說還是比較復雜。那麼在PHP中通過什麼方式來比較兩個時間的大小呢?如果認真學習了上篇博文《從34到35,PHP時間戳》中的內容,我想這個問題也不會很棘手。
要比較兩個時間的大小,我們需要將時間轉化為時間戳格式,然後再進行比較這是最常用的方法。
常用到的函數是:strtotime()
語法格式:strtotime(time,now)
如果time是絕對時間,則now參數不起作用。
如果time是相對時間,則相對應的參數則對應函數就是now來提供,如果沒有提供now參數,那麼相對應的時間就是當前的本地時間。
實例:比較兩個絕對時間的大小
代碼:
- <?php
- $zero1=date(“Y-m-d H:i:s”);
- $zero2=”2010-11-29 21:07:00″;
- echo “zero1的時間為:”.$zero1.”<br>”;
- echo “zero2的時間為:”.$zero2.”<br>”;
- if(strtotime($zero1)<strtotime($zero2)){
- echo “zero1早於zero2″;
- }else{
- echo “zero2早於zero1″;
- }
- ?>
輸出結果:
zero1的時間為:2010-11-30 21:12:55
zero2的時間為:2010-11-29 21:07:00
zero2早於zero1
注:可以根據實例發散思維
計算兩個日期的差值
奧運會倒計時,亞運會倒計時,生日倒計時這些倒計時都可以通過計算兩個日期的差值來實現,同樣需要用到strottime()函數。
實現倒計時需要將兩個時間的差值整數化,需要用到函數ceil()
ceil()函數的作用是求不小於給定實數的最小整數
實例:倒計時小程序
實例代碼:
- <?php
- $zero1=strtotime (date(“Y-m-d H:i:s”)); //當前時間
- $zero2=strtotime (“2011-2-03 24:00:00″); //過年時間
- $guonian=ceil(($zero2-$zero1)/86400); //60s*60min*24h
- echo “離過年還有<strong>$guonian</strong>天!”;
- ?>
輸出結果:離過年還有66天!
計算腳本的運行時間
在打開很多網頁時都會有一個腳本的運行時間,百度搜索時也會出現搜索用時這些元素。那麼是通過什麼來實現的呢?
計算腳本運行時間需要用到microtime()函數,該函數的作用是返回當前時間戳和微秒數。返回格式為msec sec的字符串,其中sec是當前的UNIX時間戳,msec 為微秒數。
語法格式:microtime(void)
運算原理:分別記錄腳本運行前後的時間戳,並計算兩個時間戳的差值
實例:計算上個實例中的腳本運行時間
實例代碼:
- <?php
- function run_time()
- {
- list($msec, $sec) = explode(” “, microtime());
- return ((float)$msec + (float)$sec);
- }
- $start_time=run_time();
- $zero1=strtotime (date(“Y-m-d H:i:s”)); //當前時間
- $zero2=strtotime (“2011-2-03 24:00:00″); //過年時間
- $guonian=ceil(($zero2-$zero1)/86400); //60s*60min*24h
- echo “離過年還有<strong>$guonian</strong>天!”;
- $end_time=run_time();
- ?>
- <p>
網頁加載時間:<font color=red><?php echo ($end_time-$start_time);?></font>秒
運行結果:離過年還有66天! 網頁加載時間:0.00011682510375977秒
explode()函數和list()函數將在以後的學習中詳細介紹!
好了到這裡Zero的PHP時間與日期學習就告一段落了,接下來將學習關於PHP核心技術方面的內容。歡迎各位博友持續關注!