最近在寫php data這個函數時發現時間都會有誤差,終於找到了解決的方法,其方法有三個
方法有三:( 以GMT+8台北為例 )
一、修改php.ini:
搜尋"date.timezone",將分號刪除。
二、在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
三、直接打上:
date("Y-m-d H:i:s",(time()+時差*3600))
例如:
PS:其中的3600為60*60就是代表一小時的意思
參考資料: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( )函式。