


PHP中date時(shí)差問(wèn)題解決方法
添加時(shí)間:2014-12-9 1:39:48
添加:
思海網(wǎng)絡(luò)
遇到 date(“Y-m-d H:i:s”) 的時(shí)間總是與實(shí)際時(shí)間對(duì)不上。于是查詢(xún)了相關(guān)資料知道了原因,整理如下。
出現(xiàn)這一現(xiàn)象的原因:
從php5.1.0開(kāi)始,php.ini里加入了date.timezone這個(gè)選項(xiàng),默認(rèn)情況下是關(guān)閉的,也就是顯示的時(shí)間時(shí)區(qū)。默認(rèn)情況都是格林威治標(biāo)準(zhǔn)時(shí)間和我們的時(shí)間(北京時(shí)間)差了正好8個(gè)小時(shí)。
解決方法:
1、最簡(jiǎn)單的方法就是不要用php5.1以上的版本
2、修改php.ini配置文件
可在php.ini中查找date.timezone并修改.
Windows下php.ini一般在:C:/WINDOWS/php.ini
Linux下php.ini一般在:/etc/php.ini
按照上面提示找到php.ini下的date.timezone 這行,如果找不到可以自行添加。去除前面的分號(hào),修改成 date.timezone = “Asia/Shanghai”,記得重啟http服務(wù)(如apache2或iis等)即可。
date.timezone 分號(hào)后面的值參考,
大陸內(nèi)地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次為重慶,上海,烏魯木齊)
港臺(tái)地區(qū)可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次為澳門(mén),香港,臺(tái)北)
還有新加坡:Asia/Singapore
老外好像把北京漏調(diào)了
其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC
PRC是什么?PRC是中華人民共和國(guó)啊
3、如果一定要用php5.1以上的版本,而且不能修改php.ini配置文件。
(1)在PHP代碼處理時(shí)間時(shí)添加8小時(shí)得到正確中國(guó)時(shí)間 date(‘Y-m-d H:i:s’, time()+8*3600);
(2)在關(guān)于時(shí)間的初始化語(yǔ)句上面加上 date_default_timezone_set (XXX),或者在頁(yè)頭使用date_default_timezone_set(XXX)設(shè)置我的默認(rèn)時(shí)區(qū)為北京時(shí)間 date_default_timezone_set(’Asia/Shanghai’)也可以。
格式字串可以識(shí)別以下 format 參數(shù)的字符串
format字符 說(shuō)明 返回值例子
日 — —
d 月份中的第幾天,有前導(dǎo)零的 2 位數(shù)字 01 到 31
D 星期中的第幾天,文本表示,3 個(gè)字母 Mon 到 Sun
j 月份中的第幾天,沒(méi)有前導(dǎo)零 1 到 31
l(“L”的小寫(xiě)字母) 星期幾,完整的文本格式 Sunday 到 Saturday
N ISO-8601 格式數(shù)字表示的星期中的第幾天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)
S 每月天數(shù)后面的英文后綴,2 個(gè)字符 st,nd,rd 或者 th?梢院 j 一起用
w 星期中的第幾天,數(shù)字表示 0(表示星期天)到 6(表示星期六)
z 年份中的第幾天 0 到 365
星期 — —
W ISO-8601 格式年份中的第幾周,每周從星期一開(kāi)始(PHP 4.1.0 新加的) 例如:42(當(dāng)年的第 42 周)
月 — —
F 月份,完整的文本格式,例如 January 或者 March January 到 December
m 數(shù)字表示的月份,有前導(dǎo)零 01 到 12
M 三個(gè)字母縮寫(xiě)表示的月份 Jan 到 Dec
n 數(shù)字表示的月份,沒(méi)有前導(dǎo)零 1 到 12
t 給定月份所應(yīng)有的天數(shù) 28 到 31
年 — —
L 是否為閏年 如果是閏年為 1,否則為 0
o ISO-8601 格式年份數(shù)字。這和 Y 的值相同,只除了如果 ISO 的星期數(shù)(W)屬于前一年或下一年,則用那一年。(PHP 5.1.0 新加) Examples: 1999 or 2003
Y 4 位數(shù)字完整表示的年份 例如:1999 或 2003
y 2 位數(shù)字表示的年份 例如:99 或 03
時(shí)間 — —
a 小寫(xiě)的上午和下午值 am 或 pm
A 大寫(xiě)的上午和下午值 AM 或 PM
B Swatch Internet 標(biāo)準(zhǔn)時(shí) 000 到 999
g 小時(shí),12 小時(shí)格式,沒(méi)有前導(dǎo)零 1 到 12
G 小時(shí),24 小時(shí)格式,沒(méi)有前導(dǎo)零 0 到 23
h 小時(shí),12 小時(shí)格式,有前導(dǎo)零 01 到 12
H 小時(shí),24 小時(shí)格式,有前導(dǎo)零 00 到 23
i 有前導(dǎo)零的分鐘數(shù) 00 到 59>
s 秒數(shù),有前導(dǎo)零 00 到 59>
時(shí)區(qū) — —
e 時(shí)區(qū)標(biāo)識(shí)(PHP 5.1.0 新加) 例如:UTC,GMT,Atlantic/Azores
I 是否為夏令時(shí) 如果是夏令時(shí)為 1,否則為 0
O 與格林威治時(shí)間相差的小時(shí)數(shù) 例如:+0200
P 與格林威治時(shí)間(GMT)的差別,小時(shí)和分鐘之間有冒號(hào)分隔(PHP 5.1.3 新加) 例如:+02:00
T 本機(jī)所在的時(shí)區(qū) 例如:EST,MDT(【譯者注】在 Windows 下為完整文本格式,例如“Eastern Standard Time”,中文版會(huì)顯示“中國(guó)標(biāo)準(zhǔn)時(shí)間”)。
Z 時(shí)差偏移量的秒數(shù)。UTC 西邊的時(shí)區(qū)偏移量總是負(fù)的,UTC 東邊的時(shí)區(qū)偏移量總是正的。 -43200 到 43200
完整的日期/時(shí)間 — —
c ISO 8601 格式的日期(PHP 5 新加) 2004-02-12T15:19:21+00:00
r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200
U 從 Unix 紀(jì)元(January 1 1970 00:00:00 GMT)開(kāi)始至今的秒數(shù) 參見(jiàn) time()
關(guān)鍵字:PHP、date、時(shí)差
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶(hù)
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶(hù)的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無(wú)AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解