PHP 日期时间

来源:互联网 发布:ubuntu与linux的区别 编辑:程序博客网 时间:2024/04/30 02:37
*词汇介绍
Unix时间戳(Unix timestamp) 
定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。
UTC = Coordinated Universal Time
GMT = Greenwich Mean Time
PRC = People's Republic of China 中华人民共和国

*获取时间戳
time()函数,返回一个整数
<?phpecho time();?>

*设置时区
在没有设置时区的情况下,默认时区为格林威治时间,使用date()等函数将时间戳转换为普通时间时,会有误差。
中国所在时区 UTC+8,设置中国时区方法:
1.在使用时间代码的地方前面添加:
date_default_timezone_set("Asia/Shanghai");
date_default_timezone_set('PRC');
(随便哪个都行,支持的时区列表在这:http://www.php.net/manual/zh/timezones.php)
2.修改php.ini
搜索date.timezone,找到该行,设置为 date.timezone = PRC(注意前面的分号,要去掉,分号是这个文件的注释符号)。
重启php即可。

*获取日期时间(从时间戳转化为普通时间)
date(format,timestamp)函数
format 使用字母来表示日期和时间的格式,常用的'Y-m-d H:m:s'
timestamp 时间戳整数,date()函数根据这个时间戳,转化为其他时间格式。无此参数时,默认为当前时间戳。
<?phpecho date('Y-m-d H:m:s');//输出 2013-08-08 04:08:11  注意:未设定时区,显示格林威治时间?>

format 字母解释(示例时间 2013-02-08 15:23:31)
Y - 年,4位数字(2013)
y - 年,2位数字(13)

M - 月,英文缩写(Feb)
m - 月,有前导0(02)
F - 月,英文(February)
n - 月,无前导0(2)

d - 日,有前导0(08)
j - 日,无前导0(8)

g - 时,12小时制,无前导0(3)
h - 时,12小时制,有前导0(03)
G - 时,24小时制,无前导0(15)
H - 时,24小时制,有前导0(15)

i - 分(23)
s - 秒(31)
a - 表示小写 am pm
A - 表示大写 AM PM

L - 是否为闰年 date('L'),是闰年返回1,不是闰年返回0
l - 星期几英文全称 date('l') Thursday
D - 星期几英文简写 date('D') Thu
w - 数字形式表示星期几,0表示星期日,1表示星期一,以此类推
W - 本周是一年中的第几周
t - 本月有多少天
z - 今天是一年中的第几天
T - 表示服务器时区设置,UTC 0时区

c - ISO8601日期 date('c') 显示为 2013-08-08T09:14:24+00:00
r - RFC822日期 date('r') 显示为 Thu, 08 Aug 2013 09:13:28 +0000

*从普通时间转换为时间戳
1.使用strtotime(time,now)
time 表示要识别的参数
now 参照时间,若未设置,默认使用当前时间
time是一个描述时间的字符串,可以是
Thu, 08 Aug 2013 09:13:28 +0000
2013-5-8 12:5:23
next monday
last sunday
second monday
next month
规则是使用简单没有歧义的表示时间的英语。
next,second 等词汇需要参照时间,需要设置now,如果没有设置,默认使用当前时间。
<?phpecho date("Y-m-d H:i:s", strtotime("next month",strtotime("2013-5-8")));//输出 2013-06-08 00:00:00?>

2.使用mktime(hour,minute,second,month,day,year)
参数可以从右到左依次空着,空着的参数会被设为相应的当前格林尼治标准时间
<?phpecho date("Y-n-j H-i-s A",mktime(2,15,30));//2013-8-8 02-15-30 AM?>

如果参数不合法,返回FALSE;但是对于超出范围的值,会自动进位,例如
<?phpecho date("Y-n-j H-i-s A",mktime(2,15,65));//second参数已经超过60秒范围,但输出是 2013-8-8 02-16-05 AM ,已向hour进位?>
原创粉丝点击