解決PHP時間函數(Date),針對時差部份

解決PHP時間函數(Date),針對時差部份

PHPDate()出現錯誤對於新手來說是比較頭疼的一件事情。
我們給出了具體的解決方法,希望對大家有所說明。

我們在運用PHPDate()這個函數取得時間資料的時候,經常會遇到不準確等一系列問題。
下面我們將為大家具體講解PHPDate()出現錯誤的關聯解決辦法。

取得系統時間時,發現取得的時間與系統的時間不符。
今天用echo date("Y-m-dH:i:s")取得系統時間時,發現取得的時間與系統的時間不符。

PHP是外國人開發的,所以經常有很多東西不太好用。
研究了一番發現,PHP預設設定的時間是以格林威治時區為標準的,表現是和台灣時間差8個小時,因此我們需要將其+8個小時,原理是我們正好位於時區的東8區,所以我們必須把PHP的時區設定改為台北時間。

寫php data這個函數時時間都會有誤差,解決的方法有三個:

 方法有三:( 以GMT+8台北為例 )
一、修改php.ini:
開啟PHP.ini檔案,一般在PHP的安裝根目錄下
找到其中的:date.timezone
刪掉date.timezone前面的分號,並改成:date.timezone=Asia/Taipei
存檔,並重新啟動Apahce服務(有時用Apache的restart功能會有問題,建議先stop然後再start)
重新檢驗一下echodate("Y-m-dH:i:s")。
是不是時間還原標準了

二、在date()前面增加:
date_default_timezone_set('時區');
例如:
date_default_timezone_set('Asia/Taipei');
echo date("Y-m-d H:i:s");
?>
時區列表:http://www.php.net/manual/en/timezones.php
三、直接打上:
例如:
<?php echo date("Y-m-d H:i:s",mktime (date(H)+8, date(i), date(s), date(m), date(d), date(Y)))?>
   
參考資料:http://www.domain.cn/blog/index.php/16064/action_viewspace_itemid_19492.htm

至於更多的data函數運用請參考http://linux.tnc.edu.tw/techdoc/banic/dateandtime/date.html


date

(PHP3 , PHP4)

date ---  將本地的時間/日期格式化

語法 : string date (string format [, int timestamp])

說明 : 

使用給予的timestamp按照格式化字串傳回一格式化字串,如果沒有給予timestamp則使用本地的時間。

以下是格式化字串中認定的字元

  • a - "am" 或 "pm"

  • A - "AM" 或 "PM"

  • B - 網際網路時間樣本

  • d - 幾日,例如" 01" 到 " 31"

  • D - 幾日,以3個英文字表示例如:" Fri "

  • F - 幾月,以英文全名表示例如:" January "

  • g - 小時,12小時制不足2位數不補0例如:" 1" 到 " 12 "

  • G - 小時,24小時制不足2位數不補0例如:" 0 " 到 " 23 "

  • h - 小時12小時制例如:" 01" 到 " 12 "

  • H - 小時,24小時制例如:" 00 "  " 23 "

  • i - 幾分,例如:" 00 " 到 " 59 "

  • I (大寫的 i) - "1" if Daylight Savings Time, "0" otherwise.

  • j - 幾日,不足2位數不補0例如:" 1"  " 31"

  • l (小寫的 'L') - 幾日,以英文全名表示,例如:"Friday"

  • L - 布林值,判斷是否為閏年,例如:" 0"  " 1"

  • m - 幾月,例如:" 01"  " 12"

  • M - 幾月,以3個英文字表示例如:"Jan"

  • n - 幾月,不足2位數不補0例如:" 1" 到 "12"

  • s - 幾秒,例如:" 01"  " 59"

  • S - 以英文後2個字表示,例如:"th","nd"

  • t - 當月的天數,例如:" 28" 到 " 31"

  • T - 這個機器的時間區域設定,例如 "MDT"

  • U - 總秒數

  • w - 以數字表示星期幾,例如" 0" 到 " 6"

  • Y - 幾年,以4位數表示例如:" 1999"

  • y - 幾年,以2位數表示例如:"99"

  • z - 一年中的第幾天,例如:" 0" 到 " 365"

  • Z - 在短時間內時間區域補償(timezone offset) ,例如"-43200" to "43200"

在格式化字串中未被認出的字元將會被列出來,當使用gmdate( )時"Z"格式將總是傳回"0"

Example :

   print (date ("l dS of F Y h:i:s A")); 

   print ("July 1, 2000 is on a " . date ("l", mktime(0,0,0,7,1,2000)));

?>

它可能會和date( )與mktime( )一起使用,來找出是將來或是過去的日期

Example :

   $tomorrow  = mktime (0,0,0,date("m")  ,date("d")+1,date("Y"));

   $lastmonth = mktime (0,0,0,date("m")-1,date("d"),  date("Y"));

   $nextyear  = mktime (0,0,0,date("m"),  date("d"),  date("Y")+1);

?>

將日期格式化成其它的語言(languages),你應該使用setlocal( )和strftime( )函式

引用通告地址: 點擊獲取引用地址
標籤: php程式教學
評論: 0 | 引用: 0 | 閱讀: 8190