• PHP的日期和时间处理函数


    1. 将日期和时间转变为时间戳

      1.1 time()

        原型:time(void)

        作用:返回当前时间的 UNIX时间戳。

        参数:void,可选(即无参数)

      1.2 mktime()

        原型:int mktime([int hour[,int minute[,int second[,int month[,int day[,int year]]]]]])

        作用:将给定日期和时间转变成UNIX时间戳

        参数:该函数中所有参数都是可选的,如果参数为空,默认将当前时间转变成UNIX时间戳。这样,和直接调用time()函数获取当前的UNIX时间戳功能相同。参数也可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。如果只想转变日期,对具体的时间不在乎,可以将前三个转变时间的参数都设置为0。mktime()函数对于日期运算和验证非常有用,它可以自动校正越界的输入。

       代码示例:

          echo date("Y-m-d",mktime(0,0,0,12,36,2008))." ";      //日期超过31天,计算后输出:2009-01-05

          echo date("Y-m-d",mktime(0,0,0,14,1,2010))." ";      //月份超过12月,计算后输出:2011-02-01

      1.3 strtotime()

          原型:int strtotime(string time[,int now])

          作用:用英语的自然语言创建某个时刻的时间戳,接受一个包含美国英语日期格式的字符串并尝试将其解析为UNIX时间戳(自January 1 1970 00:00:00 GMT起的秒数),其值相对于now参数给出的时间,如果没有提供此参数则用系统当前时间。该函数执行成功后则返回时间戳,否则返回FALSE。

          代码示例:

            echo date("Y-m-d",strtotime("now"));      //输出:2015-07-24

            echo date("Y-m-d",strtotime("24 july 2015"));    //输出:2015-07-24

            echo date("Y-m-d",strtotime("+1 day"));      //输出:2015-07-25

            echo date("Y-m-d",strtotime("last monday"));    //输出:2015-07-20

    2 在PHP中获取日期和时间

      2.1 getdate()

        原型:getdate(timestamp)

        作用:取得日期/时间信息。

        参数:timestamp:可选的UNIX时间戳,如果没有给出时间戳,则认为是当前本地时间。

        返回值:返回一个由时间戳组成的关联数组,总共返回11个数组元素,如下所示:

           键名                  描述                  返回值例子

          hours                小时的数值表示                0~23

          mday                月份中日的数值表示              1~31

          minutes                分钟的数值表示                0~59

          mon                月份的数值表示                1~12

          month                月份的完整文本表示              January~December

          seconds              秒的数值表示                  0~59

          wday                一周中日的数值表示              0~6(0表示星期日)

          weekday              一周中日的完整文本表示            Sunday~Saturday

          yday                一年中日的数值偏移              0~365

          year                年份的4位表示                 例如:1999或2009

          0    自从UNIX纪元开始至今的秒数,和time()的返回值以及用于date()的值类似   系统相关,典型值为从-2147483648~2147483647

        代码示例:如果将“2009年10月1日,07:30:50 EDT”转变为UNIX时间戳1254382250表示,并将其传给getdate()函数,查看各元素如下:

          array (

           'seconds' => int 50

           'minutes' => int 30

           'hours' => int 19

           'mday' => int 1

           'wday' => int 4

            'mon' => int 10

            'year' => int 2009

            'yday' => int 273

            'weekday' => string 'Thursday' (length=8)

           'month' => string 'October' (length=7)

            0 => int 1254396650

           )

      2.2 date()

        原型:string date(string format[,int timestamp])

        作用:用于对日期或时间进行格式化

        参数:该函数有两个参数,第一个参数是必需的,规定时间戳的转换格式。第二个参数是可选的,需要提供一个UNIX时间戳,如果没有指定这个UNIX时间戳,默认值为time()将返回当前的日期和时间。

        返回:返回一个格式化后表示适当日期的字符串。

        代码示例:

          echo date("Y年m月d日 H:i:s");      //格式化一个本地时间和日期

          echo date("Y-m-d H:i:s");        //输出:2015-07-24 11:48:13

          echo date("Y-m-d",1437709743);    //输出:2015-07-24    

    3.修改PHP的默认时区

      PHP默认的时区设置是UTC时间,而北京正好位于时区的东八区,领先UTC8个小时。所以在使用PHP中像time()等获取当前时间的函数时,得到的时间总是不对,表现是和北京时间相差8个小时。如果希望正确地显示北京时间,就需要修改默认的时区设置。可以通过以下两种方式完成。

      (1)如果使用的是独立的服务器,有权限修改配置文件,设置时区就可以通过修改php.ini中的date.timezone属性完成。我们可以将这个属性的值设置为"Asia/Shang"、"Asia/Chongqing"、"Etc/GMT-8"或PRC等中的一个,再在PHP脚本中获取当前的时间就是北京时间。修改PHP的配置文件如下所示:

        date.timezone = Etc/GMT-8

      (2)如果使用的是共享服务器,没有权限修改配置文件php.ini,并且PHP版本又在5.1.0以上,也可以在输出时间之前调用date_default_timezone_set()函数设置时区。该函数需要提供一个时区标识符作为参数,和配置文件中date.timezone属性的值相同。该函数的使用如下所示:

        date_default_timezone_set("PRC");
        echo date("Y-m-d H:i:s",time());

    4.使用微妙计算PHP脚本执行时间

      microtime()

        原型:mixed microtime([bool get_as_float])

        作用:返回当前UNIX时间戳和微妙数

        参数:该函数有一个可选的布尔型参数,如果在调用时不提供这个参数,本函数以"msec sec"的格式返回一个字符串。其中sec是自UNIX纪元起到现在的毫秒数,而msec是微妙部分,字符串的两部分都是以秒为单位返回的。如果给出了get_as_float参数并且其值等价于TRUE,microtime()函数将返回一个浮点数。在小数点前面还是以时间戳的格式表示,而小数点后面则表示微妙的值。但要注意参数get_as_float是在PHP5.0版本中添加的,所以在PHP5.0以前的版本中,不能直接使用该参数请求一个浮点数。

        代码示例:

          class Timer{
              private $startTime = 0;
              private $stopTime = 0;

              function start()
              {
                  $this->startTime = microtime(true);
              }

              function stop()
              {
                  $this->stopTime = microtime(true);
              }

              function spent()
              {
                  return round($this->stopTime - $this->startTime,4);
              }
          }
        $timer = new Timer();

        $timer->start();
        usleep(1000);
        $timer->stop();
        echo "执行脚本用时<b>".$timer->spent()."</b>";     //输出:执行脚本用时0.0008

            

        

  • 相关阅读:
    Pygame
    This is my first blog
    Delphi中的线程类
    Delphi的HashMap
    centos7 怎么用service命令启动服务
    CentOS使用sudo提示用户不在sudoers文件中的解决方法
    Oracle常用的数据库字段
    应用系统数据对接几种方案
    SQL Server中的小技巧(重复、替换、截取、去空格、去小数点后的位数)
    FastReport For Delphi7 通用安装方法
  • 原文地址:https://www.cnblogs.com/xuying/p/4673103.html
Copyright © 2020-2023  润新知