php时间函数time()、date()、mktime()、strtotime()、date_...

php时间函数真的不少,有时候弄得人有点头大,再加上php的好搭档mysql自身也有时间处理函数,因此有必要深刻分析下时间函数。php处理时间的主要的几个有time()、date()、mktime()、strtotime()、date_default_timezone_set(get)可能有的函数你们都很熟悉了,有的本身用的很少。下面咱们结合实际例子来说解下。php

好比如今我想用php时间函数获得如今的时间,你可能会这样写。mysql

<?php
echo time();
?>

输出一下看看,是一大串的数字,不是咱们想看到的时间格式效果,那这写数字是什么东东呢?这个就是咱们不怎么了解的UTC时间,它是怎么计算的呢?它是格林威治时间 即1970 年 1 月 1 日 00:00:00 到当前时间的秒数,若是你再不明白,我再给你说的透一点,它就是如今的时间减去1970.1.1 00:00:00 而后把它们的差化成秒为单位的数值就是咱们如今输出的值了。sql

咱们获得的UTC时间可能咱们知道怎么再转换过来,可是别人不知道啊,因此,咱们要给这个UTC时间转换下格式,让它成为咱们能看的懂的时间,那么如今你能够选择date()函数。函数

<?php
echo date(‘”Y-m-d H:i:s”);
?>

上面的一句代码会输出什么呢?运行下,好了,格式咱们能够懂了,可是不是说这个函数是格式化函数吗?怎么也能获得时间呢?呵呵 这个函数的第二个参数我没有写出来,第二个参数是一个UTC参数串,若是不给,那么就会默认输出time()的格式化时间,在这里咱们不想输出当前的时间,咱们想输出2012-12-21号世界末日的时间,怎么输出呢,这时候咱们能够用mktime()函数了。spa

<?php
echo date(“Y-m-d H:i:s”,mktime(0,0,0,12,21,2012));
?>

这样输出来  就是你要的时间了,mktime()函数根据你输入的格式返回一个UTC时间,可是必定要记住参数的顺序,小时-分钟-秒-月-日-年。操作系统

细心的朋友必定发现了,我用date去格式化如今的时候,输出的不是如今的时间啊,比如今的时间晚八个小时啊。这就是咱们所说的时差了,UTC时间是根据格林威治,就是这个地方把地球分为了东西两部分,咱们在东八区,按照地理知识咱们应该是这个地方快8个小时,因此,咱们的函数就出现了“错误”,少给咱们加了8个小时。code

怎么避免上面的现象发生呢,很简单就是用到了这个函数,date_default_timezone_set()get

咱们能够先来看下咱们这个地方时区是怎么设定的ast

<?php
echo  date_default_timezone_get();
?>

输出的是“UTC”,说明咱们是按照格林威治时间计算的,这个函数是会通过判断后才得出你所在的地方应该按照什么来计算你的时间。判断的前后以下:class

1:用 date_default_timezone_set() 函数设定的时区(若是设定了的话)

2:TZ 环境变量(若是非空)

3:date.timezone 配置选项(若是设定了的话)

4:本身推测(若是操做系统支持)

5:若是以上选择都不成功,则返回 UTC

咱们能够从条件中看到,咱们能够用date_default_timezone_set()这个函数来设定咱们所在的时区,

<?php
date_default_timezone_set(“Etc/GMT-8″);
echo date(“Y-m-d H:i:s”);
?>

运行上面的代码 是否是就是你想要的时间了。date_default_timezone_set()这个函数的参数能够去找下资料,我就不一一讲解了,大部分咱们主要用的是Etc/GMT-8 即东八区。

好了上面的函数你可能了解的差很少了,下面咱们来了解一个比较人性化的函数 strtotime(),为何说它人性化呢,看了下面就知道了

<?php
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";
?>

呵呵,是否是很智能呢,你给他一个指令 他就能输出时间,固然这个时间仍是UTC时间戳。

好了,php的大部分时间函数就这么多了,有空的话,我会写一篇mysql的时间函数的分析。

相关文章
相关标签/搜索