日期时间函数库是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>