PHP进阶(第九弹:日期时间函数)

日期时间函数库是PHP内置函数库,可以获取服务器的日期时间相关内容。

我们可以先看看php是否已经有了日期时间库的扩展:

<?php
phpinfo();

运行该文件,可以搜到,date/time support是enabled的,说明已经有这个扩展了。

设置时区

在phpinfo()中可以看到,默认的时区Default timezone为UTC。
可以使用date_default_timezone_get()来获取时区。

可以通过几种方法设置时区

修改配置文件

修改PHP配置文件data.timezone设置时区。
打开php.ini,找到date.timezone,设置为中国的时区如PRC,保存文件,重启服务器即可。

可以在http://php.net上搜索date_default_timezone_set,找到所支持的时区列表。

通过date_default_timezone_set()动态设置时区

date_default_timezone_set('Asia/Shanghai');

通过ini_set()动态设置时区

ini_get('date.timezone');
ini_set('date.timezone','Asia/Shanghai');

要注意,使用这两个函数时,需要配置文件中相应的配置项打开才行(即在配置文件中该配置项没有使用分号注释掉)。并且不是所有的配置项都能用这两个函数设置和获取。具体用法可参见PHP手册。

date()函数

date()函数非常常用,常用参数如下(注意大小写):

format 说明 返回值
Y 4位完整的年份 例如2017
y 2位年份 例如17
m 月份,带前导零 01~12
d 月份中的第几天,带前导零 01~31
H 小时,24小时格式,带前导零 00~23
i 分钟,带前导零 00~59
s 秒钟,带前导零 00~59

如:

echo date('Y年m月d日');
echo date('Y-m-d');
echo date('Y/m/d H:i:s');

还有更多的format,具体可参见PHP手册:http://php.net/,搜索date即可。

time()函数

使用time()可以获取当前的时间戳。
时间戳是指从1970年1月1日00:00:00到当前时间所经历的秒数。

date()函数的第二个参数是一个时间戳,默认传的就是当前的时间戳,
date('Y-m-d')date('Y-m-d',time())是一样的。

想要得到一天后的日期:

echo date('Y-m-d H:i:s',time()+24*3600);

mktime()函数

如果想要把日期转换成时间戳,可以使用mktime()函数,通常用于计算两个日期的时间差,如:

$birth=mktime(0,0,0,10,1,2000);
$now=time();
$age=floor(($now-$birth)/(24*3600*365));
echo $age;

更多使用可参照PHP手册。

strtotime()函数

这个函数可以将任何字符串的日期时间描述解析为 Unix 时间戳,如想要获取后一天的日期:

echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
echo date('Y-m-d H:i:s',strtotime('+1 day')),'<br/>';
echo date('Y-m-d H:i:s',strtotime('+2 days')),'<br/>';
echo date('Y-m-d H:i:s',strtotime('-1 day')),'<br/>';
echo date('Y-m-d H:i:s',strtotime('+1 month')),'<br/>';
echo date('Y-m-d H:i:s',strtotime('+2 years')),'<br/>';
echo date('Y-m-d H:i:s',strtotime('+2 years 5 months 10 days')),'<br/>';

更多用法参见PHP手册。

H5中新增表单日期时间相关的控件

如:

<input type="date" name="datetime" id="" /><br>
<input type="datetime-local" name="datetime1" id="" /><br>
<input type="month" name="month" id="" /><br>
<input type="week" name="week" id="" /><br>
<input type="time" name="time" id="" /><br>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章