PHP中的日期相关函数(一)

admin 2025-04-03 120人围观 ,发现258个评论

日期相关的操作函数是我们在日常的工作开发中最常接触到的功能。当然,大部分同学可能最多用到的就是date()、time()这两个函数,我们今天先不讲这两个函数,或许后面的文章也不太会讲它们,毕竟太常用了。本身在对手册文档的学习中,就是要发掘有意思的或者没有接触过的一些功能函数,所以我们今天的学习的函数可能是大家都没怎么用过的,甚至可能很多大家都没见过的。

时区类相关函数

首先就是时区类的一个对象。它可以帮助我们获取一些当前时区相关的信息。

$timezone=newDateTimeZone('Asia/Shanghai');var_dump($timezone);//object(DateTimeZone)5(16){//["y"]=//int(0)//["m"]=//int(0)//["d"]=//int(2)//["h"]=//int(0)//["i"]=//int(0)//["s"]=//int(0)//["f"]=//float(0)//["weekday"]=//int(0)//["weekday_behavior"]=//int(0)//["first_last_day_of"]=//int(0)//["invert"]=//int(1)//["days"]=//int(2)//["special_type"]=//int(0)//["special_amount"]=//int(0)//["have_weekday_relative"]=//int(0)//["have_special_relative"]=//int(0)//}

从打印的结果可以看出,diff()对象返回的是一个DateInterval对象。这个就是我们这节的主角了,关于它打印出来的这些属性内容就不多解释了,字段名已经非常直观了,值就是具体的差值。

$interval=newDateInterval("P2D");var_dump($interval);//object(DateInterval)5(16){//["y"]=//int(2)//["m"]=//int(0)//["d"]=//int(4)//["h"]=//int(6)//["i"]=//int(8)//["s"]=//int(0)//["f"]=//float(0)//["weekday"]=//int(0)//["weekday_behavior"]=//int(0)//["first_last_day_of"]=//int(0)//["invert"]=//int(0)//["days"]=//bool(false)//["special_type"]=//int(0)//["special_amount"]=//int(0)//["have_weekday_relative"]=//int(0)//["have_special_relative"]=//int(0)//}

我们还可以通过字段串形式的日期数据返回间隔对象,比如:

//从日期语句创建时间间隔var_dump(DateInterval::createFromDateString('2days'));//object(DateInterval)7(6){//["start"]=//object(DateTime)9(3){//["date"]=//string(26)"2020-09-3000:00:00.000000"//["timezone_type"]=//int(3)//["timezone"]=//string(13)"Asia/Shanghai"//}//["interval"]=//object(DateInterval)11(16){//["y"]=//int(0)//["m"]=//int(0)//["d"]=//int(7)//["h"]=//int(0)//["i"]=//int(0)//["s"]=//int(0)//["f"]=//float(0)//["weekday"]=//int(0)//["weekday_behavior"]=//int(0)//["first_last_day_of"]=//int(0)//["invert"]=//int(0)//["days"]=//bool(false)//["special_type"]=//int(0)//["special_amount"]=//int(0)//["have_weekday_relative"]=//int(0)//["have_special_relative"]=//int(0)//}var_dump($daterange-getStartDate());//object(DateTime)11(3){//["date"]=//string(26)"2020-09-3000:00:00.000000"//["timezone_type"]=//int(3)//["timezone"]=//string(13)"Asia/Shanghai"//}

它的这一堆方法其实返回的就是我们定义的那些构造参数信息。另外,它还可以指定从开始日期往后按照时间间隔返回几条信息。

$period=newDatePeriod($start,$interval,4);foreach($periodas$date){echo$date-format("Ymd"),PHP_EOL;}//20200901//20200908//20200915//20200922//20200929var_dump($period-getRecurrences());//int(4)

recurrences参数的作用就是按照指定的时间间隔返回几条信息,这里我们是返回9月1号之后每次间隔7天的4条信息,和上面的内容一样。这时我们修改构造函数的值为其它数量,比如修改为2,那么就只会返回到9月15号的信息了。它不会受到结束日期的约束,可以返回从开始日期到指定数量之后的所有信息,大家可以自己尝试一下。

总结

今天学习的内容不知道大家有没有接触过,反正我是只用过diff()方法来处理过日期之间的差值问题,而且也并没有注意到过它返回的这个对象具体的内容。而另外两个对象则是压根没有印象,完全就是没听说过的感觉。所以说,平常多刷刷手册还是非常有帮助的,今天学习的内容又让我们知道了很多东西,而且DatePeriod在具体的业务实现中是肯定会有使用场景的。学习不止,后面我们要学习的内容依然精彩。

测试代码:

(一).php

参考文档:

猜你喜欢
    不容错过