日期与时间是一种比较复杂的组合型数据,各种环境下的处理方式并不完全一致;本节,我们就了解一些在PHP中处理日期与时间的函数,并对一些常用代码进行封装。

time()、mktime()与checkdate()函数

在PHP中处理日期和时间,有一个很重要的概念就是UNIX时间戳(timestamp),这是一个整数,这个数据的基点就是1970年1月1日零时零分零秒的时刻,其值为0,而时间戳数据实际上就是距离这一基准时间的秒数。

我们可以使用time()函数获取系统中的当前时间戳,如下面的代码。

除了使用time()函数获取当前时间,我们还可以使用mktime()函数创建一个时刻的时间戳,此函数的定义如下:

这几个参数都整数类型,并且都是可选的,如果这些参数都不指定,那么,mktime()函数返回的值与time()函数的作用就是相同的。

使用mktime()函数时应注意,如果环境中设置的时区不确定,会在页面中显示一个警告信息;在实际应用中,我们可以使用date_default_timezone_set()函数设置默认的时区;在大陆地区,可以设置的时区参数有”Asia/Shanghai”和”Asia/Chongqing”,即上海和重庆。下面的代码,将分别显示当前时间戳和一个指定时刻的时间戳。

此外,如果只需要年、月、日,可以将mktime()函数的前三个参数设置为0,而年、月、日数据是否能够正确组成时间戳数据,还可以使用checkdate()函数进行验证,它的三个参数都是整数,定义格式如下:

如下面的代码。

date()函数

如果我们只能使用整数来处理日期和时间的值,当然不太直观,此时,我们可以使用date()函数将日期和时间信息转换为特定内容和格式的字符串,如下面的代码,将显示系统当前时间的标准日期时间字符串。

这种格式包含了完整的日期与时间信息,并包含了“T”字母和时区信息,也许你还是觉得有些太复杂了,因为在实际应用中,我们可能只需要如下格式的日期和时间信息:

此时,我们可以使用一些格式化字符来完成这项工具,如下面的代码。

代码中的date()函数将显示当前系统中的日期和时间,如果我们需要给出指定时刻的信息,可以在date()函数的第二个参数中设置相应的时间戳。请注意代码中的格式化字符,它们是严格区分大小写的,本例中,将始终返回19个字符的字符串,包括4位年份,月、日、时、分、秒都为2位,另外还有2个连接符、2个冒号和一个空格。

在date()函数的第一个参数中,我们还可以使用很多的格式化字符,其中还有一些比较实用的,如大写字母L,它会返回是否为闰年的信息,我们可以使用如下的代码。

使用大写字母Z作为格式化字符时,会返回当前时区与格林尼治(Greenwich)标准时间相差的秒数,如下面的代码。

在date()函数中,还有一个比较实用的格式化字符是大写字母W,它可以给出当前日期是当年的第几周,如:

此外,小写的w返回的是星期几,0是星期日,1到6分别是星期一到星期六。

完成的格式化字符列表可以参考php.net网站,搜索date即可。

getdate()函数

getdate()函数可以一次性给出时间戳中的所有主要日期与时间信息,并以数组的形式返回,数组成员(日期或时间数据项)的索引(键名称)如下:

索引值为0的成员,保存时间戳数据。

year,年份数据。

mon,月份的数值数据。

mday,当月中的第几天。

hours,小时数据。

minutes,分钟数据。

seconds,秒钟数据。

wday,一周中的第几天,0为周日,1到6分别是周一到周六。

yday,一年中的第几天。

month,月份的名称。

weekday,星期的名称。

我们根据相应的索引或键可以很方便的获取相应的日期和时间数据,如果你想根据这些数据快速地创建变量,可以使用extract()函数,如下面的代码。

代码会显示当前时间的时间戳。请注意extract()函数的使用,我们对每一个数据成员名称都添加了dt前缀,如果不这样做,索引0的数据项不能正确创建变量,因为变量名不能以数字开始;通过添加前缀,我们可以将所有的数组成员转化为对应的变量,如$dt_year变量保存年份数据、$dt_0变量保存时间戳等。

microtime()函数

我们知道,使用time()函数返回的时间戳只精确到秒,如果我们需要更小的时间单位数据,如微秒,则可以使用microtime()函数。此函数有一个可选参数,其使用规则如下:

这两种使用方法产生的结果是相同的。函数会返回一个字符串,包括两个使用空格分隔的部分,前一部分为微秒信息(小数形式),后一部分为秒数(整数形式),我们可以使用如下代码将它们分离后分别使用。

这种调用方式返回的小数精度很高,我们可以根据需要对其进行加工使用。

这种调用形式将直接返回一个浮点数,包括秒钟数据(整数部分)和微秒数据(小数部分),如下面的代码。

这种调用方式只保留四位小数,一般情况下,这也够用了。

封装日期时间处理代码

前面,我们了解了一些常用的日期和时间处理的函数,我们可以看到,在实际开发中的使用并不是十分方便,特别是在只对中国的日期和时间处理,所以,我们会考虑对这些功能进行一定的封装,在处理日期时间数据的时候使用更加便利。

在PHP中的代码封装,常用的方法包括自定义函数和类,而对于简单的功能,定义一些函数就已经足够了,下面就是一些简单的功能封装,这些代码们于/lib/cn.php文件中,大家可以根据需求添加新的函数。稍后讨论如何在PHP文件中引用这些函数。

cnSetTimezone()函数

cnSetTimezone()函数用于设置中国的时区。其定义如下:

cnGetLongDateString()函数

cnGetLongDateString()给出指定时间戳的日期长格式字符串。其定义如下:

其中,参数为可选,如果不使用参数,则返回系统当前日期的长格式字符串。

cnGetShortDateString()函数

cnGetShortDateString()函数给出指定时间戳的日期短格式字符串。其定义如下。

参数与cnGetLongDateString()函数一样为可选参数,如果不使用参数,则返回系统当前日期的短格式字符串。

isLeapYear()函数

isLeapYear()函数用于判断指定的时间戳是否为闰年。其定义如下:

getDateTimeString()函数

getDateTimeString()函数将会给出指定时间戳的“年-月-日 时:分:秒”格式字符串。其定义如下:

cnGetWeekName()函数

cnGetWeekName()函数给出指定时间戳中的中文星期名称,如星期日、星期一等。其定义如下:

如果查看源文件,还可以看到一个CCn.php文件,这是以上封装函数的面向对象版本,在后面的讨论中,我们可以了解如何使用它们。

php极客时间,PHP日期与时间相关推荐

  1. python日期时间_python日期和时间的操作方法汇总

    日期和时间可以说是一种独特的数据类型,既不同于数字,也不同于字符串,而且有自己独特的运算规则.在不同的编程语言中,都会将日期和时间与常规的数据类型独立开来,单独进行操作.在python的内置模块中,时 ...

  2. mysql 字符串转时间yymmdd_mysql 日期和时间格式转换实现语句 | 很文博客

    对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型. 这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: my ...

  3. mysql手动写的时间_Mysql日期和时间函数

    对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型. 这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: my ...

  4. linux脚本日期时间,Linux 日期和时间操作详解

    Linux 日期和时间操作详解 发布时间:2012-11-27 15:10:07   作者:佚名   我要评论 Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Cl ...

  5. java日期时间转日期_Java时间和日期指南

    java日期时间转日期 长期以来,正确处理日期,时间,时区,夏令时,and年等一直是我的烦恼. 本文并不是一个全面的指南时域,请参阅日期和时间在Java中 -更详细,但略有下降,ekhem,日期. 它 ...

  6. php 去年年初和年底时间,PHP 日期与时间

    获取时间 1.使用 date 函数格式化一个本地时间. //输出当前时间 echo date('Y-m-d H:i:s'); 2.使用 getdate 函数获取时间戳的日期时间信息. //打印出详细的 ...

  7. python3正式发布时间_Python3 日期和时间

    Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. ...

  8. php 应用时间,PHP 日期与时间

    获取时间 1.使用 date 函数格式化一个本地时间. //输出当前时间 echo date('Y-m-d H:i:s'); 2.使用 getdate 函数获取时间戳的日期时间信息. //打印出详细的 ...

  9. python日期和时间_Python日期和时间

    datetime是Python处理日期和时间的标准库. 获取当前日期和时间 我们先看如何获取当前日期和时间: 1 2 3 4 5 6>>>from datetime import d ...

最新文章

  1. module 'thread' has no attribute
  2. oracle 关闭如何启动,ORACLE启动和关闭实例
  3. u3d 逐个点运动,路径运动。 U3d one by one, path motion.
  4. CSDN-markdown编辑器语法速查手册
  5. MS SQL SERVER数据库简单回顾
  6. python绘制散点图的步骤_python如何绘制散点图?
  7. matlab单自由度系统,【Matlab代码】外力单自由度阻尼系统的数值解
  8. javascript-函数声明和函数表达式-call-apply
  9. CSS Friendly 中的DetailsView的问题
  10. oracle dba_hist tablepsace,oracle数据库dba_hist等视图中的Delta相关字段介绍
  11. OCS Inventory NG使用之win平台下的AGENT端安装与信息收集(一)
  12. [rtsp]海康IPC监控摄像头远程外网监控配置(DDNS)
  13. *明确插件的功效*千千静听听音效插件使用介绍及相关下载
  14. SpringCloud(若依微服务版为例)集成WebSocket实现前后端的消息推送
  15. 证券运维外包第3个月工作总结
  16. 基于《狂神说Java》Redis--学习笔记
  17. fat,fat32,ntfs,ext2,ext3等 文件系统说明
  18. ppt学习07——动画
  19. 远程控制软件开发_软件开发人员的远程工作
  20. ICPR 2022 | 第一届卫星视频运动目标检测与跟踪挑战赛正式开赛

热门文章

  1. golang mysql封装_使用Golang 封装一个Api 框架 ----- 数据库操作篇(gorm引入)
  2. Linux单系统手动分区教程,【教程贴】Linux类系统手动操作篇--标准分区硬盘和目录扩容...
  3. mysql命令导出方法_MySql使用mysqldump 导入与导出方法总结
  4. element-ui多选框模糊搜索输入文字闪动问题
  5. 《白帽子讲web安全》学习笔记 (3)
  6. 管理软件开发历程之一Coolite配置
  7. 事件驱动的javascript
  8. 全奖博士招生,荷兰根特大学 ​IDLab 实验室,手语手势识别方向
  9. ECCV 2020 谷歌论文盘点—Poster 篇
  10. 图匠数据等提出高精度零售货架姿态估计算法GSPN