php 時區調整教學

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( )函式。

 

 

轉載於:http://por.tw/php/rewrite.php/read-5.html

Victor
Victor

哈囉!

文章: 220

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *