Home >php教程 >php手册 >实例介绍PHP日期函数date格式转换

实例介绍PHP日期函数date格式转换

WBOY
WBOYOriginal
2016-06-13 10:47:20917browse

网站开发时我们经常需要对日期、时间进行处理,在PHP里提供了很多日期、时间函数方便PHP开发者对日期、时间进行计算、格式转换。所以掌握PHP日期函数非常必要,也为处理PHP日期函数与Mysql数据库日期之间的格式转换打下基础。这里以PHP实例介绍PHP基础:日期函数date和Unix时间戳函数以及相互间日期格式的转换方法。
 
PHP日期时区设定
 
在启用PHP日期函数之前,首先需要确保设定的时区是正确的,否则显示出的日期可能会有出入。在PHP环境搭建时只需要在PHP.INI配置文件中设定date.timezone为相应的时区即可。如果你没有操作PHP.INI配置文件的权利,可通过PHP时区函数date_default_timezone_get(void)获取当前PHP运行环境的时区,再使用date_default_timezone_set(string $timezone_identifier)函数设定相应的时区,更多PHP支持的时区可查询http://www.php.net/manual/en/timezones.php。
 
PHP格式化日期函数Date
 
 原型string date(string $format[,int $timestamp])
 
$format - PHP日期函数date的格式代码
$timestamp - Unix时间戳,默认为当前时间戳(可选)
 
格式化字符———- 说明 ——— 返回值描述
 
日(Day)
 
1
d —— 月份中的第几天,返回2位数字 ——01 到31
2
j —— 月份中的第几天,1至9不带零 ——1 到31
3
S —— 每月天数的英文后缀 ——2个字符st,nd,rd或者th。可以和j一起用
4
z —— 年份中的第几天 ——0 到366
 
 
星期(Week)
 
1
l —— 星期几 ——Sunday 到Saturday
2
D —— 英文星期几,文本表示 ——3个字母Mon 到Sun
3
N —— 以数字表示星期几(PHP 5.1.0 新加)——  1(表示星期一)到7(表示星期天)
4
w —— 星期中的第几天 ——0(表示星期天)到6(表示星期六)
5
W ——ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的)——42(当年的第42 周)
 
 
月(Month)
 
1
F —— 月份 ——January 或者March January 到December
2
m —— 数字表示的月份 ——01 到12
3
M —— 三个字母缩写表示的月份 ——Jan 到Dec
4
n —— 数字表示的月份 ——1 到12
5
t —– 月份天数 ——28 到31
 
 
年(Year)
 
1
L ——闰年,以布尔值表示 —— 如果是闰年为1,否则为0
2
o ——ISO-8601 格式年份数字。类似于Y ,除非ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加)——1999 or 2003
3
Y —— 四位数字完整表示的年份 ——1999 或2003
4
y —— 两位数字表示的年份 ——99 或03
 
 
时间(Time)
 
1
a —— 上午和下午 ——am 或pm
2
A —— 上午和下午 ——AM 或PM
3
B ——Swatch Internet时间 ——000 到999
4
g —— 小时,12 小时格式 —— 没有前导零1 到12
5
G —— 小时,24 小时格式 —— 没有前导零0 到23
6
h —— 小时,12 小时格式 —— 有前导零01 到12
7
H —— 小时,24 小时格式 —— 有前导零00 到23
8
i —— 分钟 ——  00 到59
9
s —— 秒 ——  00 到59
 
 
时区(Timezone)
 
1
e —— 时区标识(PHP 5.1.0 新加)——UTC,GMT,Atlantic/Azores
2
I —— 是否为夏令时 —— 夏令时为1,否则为0
3
T —– 时区缩写 —— 例如:EST,MDT
4
Z —— 与当前时区的时区差,单位为秒  ——  -43200 到43200
 
 
完整的日期/时间(Full Date/Time)
 
1
c ——ISO 8601 格式的日期(PHP 5 新加) ——2004-02-12T15:19:21+00:00
2
r ——RFC 822 格式的日期 ——Thu, 21 Dec 2000 16:01:07 +0200
3
U —— 从1970 1.1到某时刻总的描述,即Unix时间戳,参见time()
 
 
PHP日期函数date格式化字符的英文文档请参考http://www.php.net/manual/en/function.date.php
 
date函数使用提示:在使用PHP日期函数date输出格式化的日期格式时,你可以通过首先写出你需要输出的日期格式后,再使用date日期函数中的格式化字符进行组合,使用起来会很得心应手。
 
使用PHP日期函数date对Unix时间戳进行格式转换
 
PHP date日期函数第二个可选参数$timestamp是以Unix时间戳的形式存在,通过这个参数可以将Unix时间戳转换成相应的日期格式。使用Unix时间戳在参数传递,日期计算等方面好处很多,方便简洁。
 
PHP中将日期转换成Unix时间戳的常用函数主要有mktime、time、strtotime。
 
PHP日期函数mktime主要用来将日期和时间转换成Unix时间戳格式。
 
 原型如下
1
int mktime ([int $hour = date("H")
2
[,int $minute = date("i")
3
[,int $second = date("s")
4
[,int $month = date("n")
5
[,int $day = date("j")
6
[,int $year = date("Y")
7
[,int $is_dst = -1
8
]]]]]]])
注:mktime函数的所有参数都是可选的,其中$is_dst表示是否为夏令时,当mktime函数参数都为空时,将默认为当前时间,类似于time函数。
 
PHP日期函数time主要用来获取当前时间,以Unix时间戳格式存在。
 
PHP日期函数strtotime主要用来将英文描述的日期时间转换为Unix 时间戳。
 
 原型如下
1
int strtotime(string $time[,int $now])
 
 
注:$time参数主要是以英文文本描述的形式存在。
$now可选参数主要表示为$time计算日期时间的一个基准,默认为当前Unix时间戳。
 
PHP date日期函数主要用来转换输出各种日期格式,如果想要获取日期和时间的各个部分,可以通过传递Unix时间戳参数给getdate函数获取,getdate函数会返回一个相关数组,数组键值如下:
 
01
seconds —- 秒数
02
minutes —- 分钟
03
hours —- 小时
04
mday —- 月份中日期
05
wday —- 星期几,0(表示星期天)到6(表示星期六)
06
mon —- 月份
07
year —- 四位数字表示的完整年份
08
yday —- 一年中第几天
09
weekday —- 星期的文本表示,Sunday 到Saturday
10
month —- 月份文本表示,January 到December
11
0 —- 从Unix纪元开始至今的秒数,和time()的返回值类似。
 
 
通过上述几个PHP Unix时间戳函数,再配合PHP date日期函数可以进行各种日期格式转换、计算和输出。
 
PHP日期计算实例:
 
计算年龄
 
01
02
    $day = 1;
03
    $month = 1;
04
    $year = 1989;
05
    
06
    $birthday = mktime(0,0,0,$month,$day,$year);
07
    
08
    $nowunix = time();
09
    
10
    $age = $nowunix - $birthday;
11
    
12
    $age = floor($age / (365*24*60*60));
13
    
14
    echo $age;
15
?>
 
 
日期加减
 
01
02
  $nowUnix = time();
03
    
04
    $addTime = $nowUnix + (24*60*60); //日期加一天
05
    
06
    $redTime = $nowUnix - (24*60*60);//日期减一天
07
    
08
    echo date("Y-m-j",$addTime);
09
    echo date("Y-m-j",$redTime);
10
?>
 
 
strtotime日期计算与格式转换实例
 
日期加减也可以通过strtotime函数完成
 
 
 
01
02
     $nowTime = strtotime("now");
03
    echo date("Y-m-j",$nowTime)."
";
04
    
05
    $nowTime = strtotime("10 September 2010");
06
    echo date("Y-m-j",$nowTime)."
";
07
    
08
    $nowTime = strtotime("+1 day");
09
    echo date("Y-m-j",$nowTime)."
";
10
    
11
    $nowTime = strtotime("+1 week");
12
    echo date("Y-m-j",$nowTime)."
";
13
    
14
    $nowTime = strtotime("+1 week 2 days 4 hours 2 seconds");
15
    echo date("Y-m-j",$nowTime)."
";
16
    
17
    $nowTime = strtotime("next Thursday");
18
    echo date("Y-m-j",$nowTime)."
";
19
    
20
    $nowTime = strtotime("last Monday");
21
    echo date("Y-m-j",$nowTime)."
";
22
?>
至此,PHP日期函数date格式化字符含义以及部分PHP Unix时间戳函数的介绍以及相互间的转换和格式化输出实例就介绍完了,这对掌握PHP日期、时间函数的计算、与转换是非常必要的。希望对PHP入门学习的朋友有所帮助。
 
 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn