PHP提供了大量的内置函数,使开发人员在时间的处理上游刃有余,大大提高了工作效率。我们今天就为学员介绍一些常见的PHP日期和时间函数以及日期和时间的处理。  9.1 常用的日期和时间处理函数 表9-1:常用的日期和时间处理函数  函 数  说  明   checkdate  验证时间函数,判断时间是否有效,有效返回true,否则返回false   date_default_timezone_get  取得脚本日期时间函数所使用的默认时区   date_default_timezone_set  设定日期时间函数的默认时区   date  格式化一个本地时间/日期   getdate  获取日期/时间信息   gettimeofday  获取当前时间   localtime  获取本地时间   microtime  返回当前时间戳和微秒数   mktime  取得一个UNIX时间戳   strtotime  将任何英文文本的日期时间描述解析为UNIX时间戳   time  返回当前的UNIX时间戳    9.2 处理日期和时间 9.2.1 获取当前日期和时间:date()函数,用法: date(string format,int timestamp)     该函数将返回参数timestamp按照指定格式而产生的字符串。其中参数timestamp是可选的,如果省略,则使用当前时间。format参数可以使开发人员按其指定的格式输出时间日期。  date_default_timezone_set(PRC);  //设置北京时间.  1. 年-月-日  echo date('Y-m-j');  //例:2007-02-6  echo date('y-n-j');  //例:07-2-6     大写Y表示年四位数字,而小写y表示年的两位数字;  小写m表示月份的数字(带前导),而小写n则表示不带前导的月份数字。  echo date('Y-M-j');   //例:2007-Feb-6  echo date('Y-m-d');   //例:2007-02-06     大写M表示月份的3个缩写字符,而小写m则表示月份的数字(带前导0);  没有大写的J,只有小写j表示月份的日期,无前导o;若需要月份带前导则使用小写d。  echo date('Y-M-j');   //例:2007-Feb-6  echo date('Y-F-jS');  //例:2007-February-6     大写M表示月份的3个缩写字符,而大写F表示月份的英文全写。(没有小写f)  大写S表示日期的后缀,比如“st”、“nd”、“rd”和“th”,具体看日期数字为何。  小结:  表示年可以用大写的Y和小写y;  表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式);  表示日可以用小写d和小写j,大写S表示日期的后缀。  2,时:分:秒  默认情况下,PHP解释显示的时间为“格林威治标准时间”,与我们本地的时间相差8个小时。  echo date('g:i:s a');    //例:5:56:57 am  echo date('h:i:s A');    //例:05:56:57 AM     小写g表示12小时制,无前导0,而小写h则表示有前导0的12小时制。  当使用12小时制时需要表明上下午,小写a表示小写的“am”和“pm”,大写A表示大写的“AM”和“PM”。  echo date('G:i:s');14:02:26     大写G表示24小时制的小时数,但是不带前导的;使用大写的H表示带前导的24小时制小时数  小结:  字母g表示小时不带前导,字母h表示小时带前导;  小写g、h表示12小时制,大写G、H表示24小时制。  3,闰年、星期、天   大写L表示判断今年是否闰年,布尔值,为真返回1,否则为0;  小写l表示当天是星期几的英文全写(Tuesday);  而使用大写D表示星期几的3个字符缩写(Tue)。  echo date('w');    //例:今天星期:2  echo date('W');    //例:本周是全年中的第 06 周     小写w表示星期几,数字形式表示  大写W表示一年中的星期数  echo date('t');    //例:本月是 28 天  echo date('z');    //例:今天是今年的第 36 天     小写t表示当前月份又多少天  小写z表示今天是本年中第几天  4,其他  echo date('T');    //例:UTC     大写T表示服务器的时间区域设置  echo date('I');    //例:0     大写I表示判断当前是否为夏令时,为真返回1,否则为0  echo date('U');    //例:1170769424     大写U表示从1970年1月1日到现在的总秒数,就是Unix时间纪元的UNIX时间戳。  echo date('c');    //例:2007-02-06T14:24:43+00:00     小写c表示ISO8601日期,日期格式为YYYY-MM-DD,用字母T来间隔日期和时间,时间格式为HH:MM:SS,时区使用格林威治标准时间(GMT)的偏差来表示。  echo date('r');    //例:Tue, 06 Feb 2007 14:25:52 +0000     小写r表示RFC822日期。  9.2.2 获取日期信息:getdate()函数 语法:      array getdate(int timestamp)     该函数返回数组形式的日期时间信息,如果没有时间戳,则以当前时间为准。该函数返回的关联数组元素的说明如表9-2所示:  表9-2:getdate()函数返回的关联数组元素说明  元  素  说  明   seconds  秒,返回值0~59   minutes  分钟,返回值为0~59   hours  小时,返回值为0~23   mday  月份中第几天,返回值为1~31   wday  星期中第几天,返回值为0(星期天)~6(星期六)   mon  月份数字,返回值为1~12   year  4位数字表示的完整年份,返回值加2000或2008   yday  一年中第几天,返回值0~365   weekday  星期几的完整文本表示,返回值为Sunday~Saturday   month  月份的完整文本表示,返回值为January~December   0  返回从UNIX纪元开始的秒数    例:  <?php       $arr = getdate();      echo $arr[year]."-".$arr[mon]."-".$arr[mday]."";      echo $arr[hours].":".$arr[minutes].":".$arr[seconds]."".$arr[weekday];      echo "

";      echo "Today is the $arr[yday]th of year";  ?>     效果:   9.3  UNIX时间戳 时间戳是文件属性中的创建、修改、访问时间。数字时间戳服务(digital time stamp service, DTS)是web网站安全服务项目之一,能提供电子文件的日期和时间信息的安全保护。  9.3.1  什么是时间戳 时间戳是一个经加密后形成后的凭证文档,它包括3个部分:  ²  需要添加时间戳的文件用Hash编码加密形成摘要。  ²  DTS接受文件的日期和时间信息。  ²  对接受的DTS文件加密。  数字时间是由认证单位DTS来添加的,以DTS接收到文件的时间为依据。  时间戳的作用原理是通过其他加密法将时间的数值转换为加密的数值,时间变化后加密的数值也随之变化。  时间戳的优点是:变化的加密数值来防止数值被窃取后非法重复利用,也就起到了加密的作用。时间戳主要依赖于时间,在约定的一段时间内产生唯一的一个数值。  9.3.2 获取本地时间戳:mktime()函数 语法:  int mktime(int hour, int minute, int month, int day, int year, int [is_dst])     表9-3:mktime()函数的参数说明  参  数  说  明   hour  小时数   minute  分钟数   second  秒数(一分钟之内)   month  月份数   day  天数   year  年份数   is_dst  参数is_dst在夏令时可以被设置为1,如果不是则设置为0;如果不确定是否为夏令时则设置为-1(默认值)    注意:有效的时间戳典型范围是格林尼治时间1901年12月13日20:45:54~2038年1月19日03:13:07(此范围符合32位有符号整数的最小值和最大值)。在Windows系统中此范围限制为从1970年1月1日~2038年1月19日。  例:  <?php       echo "mktime函数返回的时间戳:".mktime()."

";      echo "当前的日期为:".date("Y-m-d",mktime())."

";      echo "当前的时间是:".date("H:i:s",mktime());  ?>     效果:   9.4  系统时区设置 很多学员在学习过程中发现通过date()函数获取到的时间跟本地时间不一样,这是由于PHP5对date()函数进行了重写,因此,目前的日期时间函数比系统时间少8个小时。在PHP语言中默认设置的是标准的格林威治时间(即采用的是零时区)。  更改PHP语言中的时区设置主要有以下两种方法:  1. 修改php.ini文件中的设置,找到[date]下的;date.timezone = 选项,将该项修改为date.timezone=Asia/Hong_Kong,然后重新启动apache服务器。  2. 在应用程序中,使用时间日期函数之前添加如下函数:  date_default_timezone_set(“Asia/Hong_Kong”);     设置完成后,date()函数就可以正常使用了,不会再出现时差问题。  9.5  时间开发中遇到的日期和时间问题 9.5.1 比较两个时间的大小 在实际开发中经常遇到判断两个时间的大小,PHP中的时间是不可以直接来进行比较的。所以,首先要将时间输出为时间戳的格式,然后再进行比较,这是常用到的方法。  有两个函数都可以实现这个功能,这里使用strtotime()函数,该函数可以将任何英文文本的日期时间描述解析为UNIX时间戳。该函数的语法为:  int strtotime(string time, int now)         该函数有两个参数。如果参数time的格式是绝对时间,则now参数不起作用;如果参数time的格式是相对时间,那么其对应的时间就是参数now来提供的,如果没有提供参数now,对应的时间就是当前时间。如果解析失败,则返回-1.  例:  <?php       $time1 = date("Y-m-d H:i:s");   //获取当前时间      $time2 = "2008-2-3 16:30:00";   //给变量$time2设置一个时间      echo "变量/$time1的时间为:".$time1."
";    //输出两个时间变量      echo "变量/$time2的时间为:".$time2."
";      if (strtotime($time1)-strtotime($time2)<0) {     //对两个时间进行比较          echo "/$time1早于/$time2";   //如果time1-time2<0说明time1的时间在前      }else{          echo "/$time2早于/$time1";   //否则,说明time2的时间在前      }  ?>     效果:   9.5.2  计算两个日期的差值     strtotime()函数除了可以比较两个日期的大小,还可以精确地知道两个日期的差值。下面通过一个倒计时的小程序来为学员们讲解如何用strtotime()函数来计算两个日期的差值。  <?PHP         $time1 = strtotime(date( "Y-m-d H:i:s"));       $time2 = strtotime("2008-2-3 17:10:00");       $time3 = strtotime("2008-8-8");       $sub1 = ceil(($time2 - $time1) / 3600);          //60 * 60       $sub2 = ceil(($time3 - $time1) / 86400);         //60 * 60 * 24       echo "离放假还有 $sub1 小时!!!" ;         echo "

";       echo "离北京奥运开幕还有$sub2 天!!!";  ?>     效果:   9.5.3 计算页面脚本的运行时间     在浏览网站时,经常会用到搜索引擎,在搜索信息时,细心的用户会发现,在搜索结果的最下方,一般都有“搜索时间为……秒”的字样。  这里使用到了microtime()函数,该函数返回当前UNIX时间戳和微秒数。返回格式为msec sec的字符串,其中sec是当前的UNIX时间戳,msec为微秒数。该函数的格式为:  string microtime(void)         下面我们来计算一下上例的运行时间,代码如下:  <?php   function run_time()  {      list($msec, $sec) = explode(" ", microtime());      return ((float)$msec + (float)$sec);  }       $start_time = run_time();       $time1 = strtotime(date( "Y-m-d H:i:s"));       $time2 = strtotime("2008-2-3 17:10:00");       $time3 = strtotime("2008-8-8");       $sub1 = ceil(($time2 - $time1) / 3600);          //60 * 60       $sub2 = ceil(($time3 - $time1) / 86400);         //60 * 60 * 24       echo "离放假还有 $sub1 小时!!!" ;         echo "

";       echo "离北京奥运开幕还有$sub2 天!!!";       $end_time = run_time();  ?>

该示例的运行时间为 <?php  echo ($end_time - $start_time); ?> 秒     效果:

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

php 时间和日期,php 日期和时间相关推荐

  1. linux7设置时间,CentOS 7 设置日期和时间

    现代操作系统分为以下两种类型的时钟: 实时时钟(Real-Time Clock,RTC),通常称为硬件时钟(一般是系统主板上的集成电路),它完全独立于操作系统的当前状态,即使在计算机关闭时也能运行. ...

  2. date日期相减 java_03时间日期类

    Java8 在 java.time 包中增加了时间日期相关的API,弥补了 Java8 以前对日期.时间处理的不足. 在介绍Java8新的时间日期API前,先看看 java8 以前我们操作日期时间常用 ...

  3. pandas使用bdate_range函数获取起始时间(start)和结束时间(end)范围内的所有周末日期(weekends day)

    pandas使用bdate_range函数获取起始时间(start)和结束时间(end)范围内的所有周末日期(weekends day) #pandas使用bdate_range函数获取起始时间(st ...

  4. pandas使用bdate_range函数获取起始时间(start)和结束时间(end)范围内的所有工作日日期(business day)

    pandas使用bdate_range函数获取起始时间(start)和结束时间(end)范围内的所有工作日日期(business day) #pandas使用bdate_range函数获取起始时间(s ...

  5. 计算机日期无法更改吗,电脑时间不能修改怎么办 电脑系统时间总是不对怎么办...

    有时候我们的电脑的时间不准,然后想要校正修改,但是发现电脑时间不能修改,这是什么原因造成的呢?小编今天从3个方面分析电脑时间不能修改的原因,进而给出解决问题的教程. 一.系统时间无法修改是什么原因 造 ...

  6. ios开发中计算代码运算时间_iOS日历、日期、时间的计算

    时间和日历的计算在iOS开发中经常看到,经常看到大家在百度,开源中国等搜索这些答案.今天写个简单的时间和日历有关的计算. 获取一个月的总天数 1.获取当月的天数 - (NSInteger)getNum ...

  7. python读取邮件发送日期和时间_Python读取指定日期邮件的实例

    背景:9月份有部分数据缺失,这部分数据在邮箱里,需要重新拉取,但是每天几百封邮件,总共有6.7万封邮件,使用stat()和retr(which)结合遍历很 耗时 基于如上背景,初始大致思路为: 使用二 ...

  8. mysql常用日期时间函数_MySql常用日期时间函数

    返回当前的日期和时间 select MICROSECOND(SYSDATE()); --0 select SECOND(SYSDATE()); --33 select MINUTE(SYSDATE() ...

  9. html date 设置时间,JavaScript Date(日期)

    JavaScript Date(日期) 对象 日期对象用于处理日期和时间. 在线实例 getFullYear() 使用 getFullYear() 获取年份. getTime() getTime() ...

  10. 显示长日期格式的系统时间

    长格式是以"YYYY年MM月DD日 星期W"的格式来显示的 应用JavaScript中的Date对象来实现的,创建一个Date对象时,如果该对象不包含任何构造参数,并且不通过set ...

最新文章

  1. FileOutPutStream in 创新实训 自然语言交流系统
  2. Kali Linux 2016.2发布提供虚拟机以及系统镜像下载
  3. topcoder srm 325 div1
  4. 用 JMX 检测应用程序
  5. 打破冷漠僵局文章_研究僵局–第3部分
  6. Flex-iframe在SWF中嵌入网页的组件(推荐)
  7. 如何在Mac上禁用iCloud驱动器?
  8. FCC 中级算法题 最小公倍数
  9. c语言的dll反编译,可怕的DLL反编译工具(DLL to C)
  10. lodash中curry的实现
  11. Array Shrinking(区间DP)
  12. 计算机开机连不上网,我家电脑有时候开机为什么连不上网,重启以后就好?
  13. 哐筹甍颚往往能够用它实现
  14. as打开时出现The environment variable JAVA_HOME (with The value of C:\Java\jdk1.8.0_101\bin) does not poin
  15. python sklearn K-Mearns---实例——消费水平
  16. 【Unity3D编辑器扩展】Unity3D中实现UI界面控制,UI界面的显示和隐藏实现
  17. JDK动态代理(通俗易懂,小白首选)
  18. Python爬虫系列之MeiTuan优选商家端商品自动化管理(商品发布、商品排期、订单采集)
  19. python.exe - 无法找到入口,无法定位程序输入点于动态链接库D:\Anaconda\lib\site-packages\torch_sparse\_version_cpu.pyd上。
  20. UDK官方视频教程带中文字幕虚幻引擎UDK(16章全) ㍿

热门文章

  1. Python2与Python3的区别(二):raw_input与input
  2. html自动写对联,HTML 实现网站对联广告位
  3. 图像处理基础知识——图片存储形式、色域、图片文件格式
  4. Java 实现短信验证功能(个人测试,不需要项目上线,利用容联云)
  5. 图像直方图及其均衡化--opencv
  6. 品搜妞——百度、谷狗、搜狗的女人三围
  7. 设计方面的优秀网站推荐QWQ
  8. 在浏览器输入URL,按下回车之后的流程?
  9. pandas 行列转换
  10. .net reflector反编译破解软件