如何让php显示本地时间2007-09-10 07:53许多编程的朋友在使用php中的date()函数时,显示出来的时间都与本地时间不一样。那是因为PHP5默认为格林威治时间,与北京时间相差8个小时。在php.ini中,将“;date.timezone =”,改成“date.timezone = PRC”,重启WEB服务。或在date()函数前加上date_default_timezone_set('PRC');语句。

PHP中其它与时间相关的函数:


mktime -- 取得一个日期的 UNIX 时间戳
int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] )
time -- 返回当前的 UNIX 时间戳(格林威治时间 1970 年 1 月 1 日 00:00:00)
int time ( void )
date -- 格式化一个本地时间/日期
string date ( string format [, int timestamp] )
format 字符说明
a 小写的上午和下午值 am 或 pm
A 大写的上午和下午值 AM 或 PM
d 月份中的第几天,有前导零的 2 位数字 01 到 31
D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun
F 月份,完整的文本格式,例如 January 或者 March January 到 December
g 小时,12 小时格式,没有前导零 1 到 12
G 小时,24 小时格式,没有前导零 0 到 23
h 小时,12 小时格式,有前导零 01 到 12
H 小时,24 小时格式,有前导零 00 到 23
i 有前导零的分钟数 00 到 59>
j 月份中的第几天,没有前导零 1 到 31
l(“L”的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday
m 数字表示的月份,有前导零 01 到 12
M 三个字母缩写表示的月份 Jan 到 Dec
n 数字表示的月份,没有前导零 1 到 12
s 秒数,有前导零 00 到 59>
w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)
Y 4 位数字完整表示的年份 例如:1999 或 2003
y 2 位数字表示的年份 例如:99 或 03
gmmktime -- 取得 GMT 日期的 UNIX 时间戳
int gmmktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] )
和 mktime() 完全一样,只除了返回值是格林威治标准时的时间戳。参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。
注: 在 Microsoft Windows 系列的操作系统中实现本函数的系统库是坏的
gmdate -- 格式化一个 GMT/UTC 日期/时间
string gmdate ( string format [, int timestamp] )
同 date() 函数完全一样,只除了返回的时间是格林威治标准时(GMT)。例如当在中国(GMT +0800)运行以下程序时,第一行显示“Jan 01 2000 00:00:00”而第二行显示“Dec 31 1999 16:00:00”。
注: 在 Microsoft Windows 系列的操作系统中实现本函数的系统库是坏的
strftime --
根据区域设置格式化本地时间/日期
string strftime ( string format [, int timestamp] )

返回用给定的格式字串对给出的 timestamp 进行格式输出后的字符串。如果没有给出时间戳则用当前的本地时间。月份和星期几以及其它和语言有关的字符串写法和用 setlocale() 设定的当前的区域有关。
格式字串能识别下列转换标记:
%a - 当前区域星期几的简写
%A - 当前区域星期几的全称
%b - 当前区域月份的简写
%B - 当前区域月份的全称
%c - 当前区域首选的日期时间表达
%C - 世纪值(年份除以 100 后取整,范围从 00 到 99)
%d - 月份中的第几天,十进制数字(范围从 01 到 31)
%D - 和 %m/%d/%y 一样
%e - 月份中的第几天,十进制数字,一位的数字前会加上一个空格(范围从 ' 1' 到 '31')
%g - 和 %G 一样,但是没有世纪
%G - 4 位数的年份,符合 ISO 星期数(参见 %V)。和 %V 的格式和值一样,只除了如果 ISO 星期数属于前一年或者后一年,则使用那一年。
%h - 和 %b 一样
%H - 24 小时制的十进制小时数(范围从 00 到 23)
%I - 12 小时制的十进制小时数(范围从 00 到 12)
%j - 年份中的第几天,十进制数(范围从 001 到 366)
%m - 十进制月份(范围从 01 到 12)
%M - 十进制分钟数
%n - 换行符
%p - 根据给定的时间值为 `am' 或 `pm',或者当前区域设置中的相应字符串
%r - 用 a.m. 和 p.m. 符号的时间
%R - 24 小时符号的时间
%S - 十进制秒数
%t - 制表符
%T - 当前时间,和 %H:%M:%S 一样
%u - 星期几的十进制数表达 [1,7],1 表示星期一
%U - 本年的第几周,从第一周的第一个星期天作为第一天开始
%V - 本年第几周的 ISO 8601:1988 格式,范围从 01 到 53,第 1 周是本年第一个至少还有 4 天的星期,星期一作为每周的第一天。(用 %G 或者 %g 作为指定时间戳相应周数的年份组成。)
%W - 本年的第几周数,从第一周的第一个星期一作为第一天开始
%w - 星期中的第几天,星期天为 0
%x - 当前区域首选的时间表示法,不包括时间
%X - 当前区域首选的时间表示法,不包括日期
%y - 没有世纪数的十进制年份(范围从 00 到 99)
%Y - 包括世纪数的十进制年份
%Z - 时区名或缩写
%% - 文字上的 `%' 字符
gmstrftime --
根据区域设置格式化 GMT/UTC 时间/日期
string gmstrftime ( string format [, int timestamp] )
和 strftime() 的行为相同,只除了返回时间是格林威治标准时(GMT)。
strtotime --
将任何英文文本的日期时间描述解析为 UNIX 时间戳
int strtotime ( string time [, int now] )
本函数预期接受一个包含英文日期格式的字符串并尝试将其解析为 UNIX 时间戳。如果 time 的格式是绝对时间则 now 参数不起作用。如果 time 的格式是相对时间则其所相对的时间由 now 提供,或者如果未提供 now 参数时用当前时间。失败时返回 -1