今天开始福哥将会给大家讲解编程基础知识日期和时间的使用技巧,这个技术在程序开发时候的使用率还是非常高的,基本上95%以上的项目都离不开日期和时间的应用场景。
关于日期和时间还是有很多知识需要了解的,如果不清楚这些的话,就会遇到很多奇怪的问题。在很多对时间控制很严格的系统里面会有非常复杂的时间处理逻辑,如果没有很好的使用经验甚至功能都无法实现。例如:昨天是什么日子?距离下一个周末还有几天?今年有多少个工作日?想要解决这些问题还是需要好好学习一下日期和时间的使用技巧的。
2.时区2.1时区时间地球是圆的,处于不同经度地区的人看到的时间是不一样的,在一条经度上的人看到的时间是一样的。所以我们在描述一个时间的时候都会以当地经度上的一个主要城市为准计算当地的时间,例如:北京时间,东京时间,伦敦时间,纽约时间等等。
处于不同经度地区的人看到的时间之间是有差的,这个差就是我们常说的时差。服务器也是存在于某一个经度地区的,所以跨时区操作网站的时候就会有时差问题。
为了解决这个问题程序默认会以一个公共时区UTC的时间为基准,大家都以这个UTC时区的时间记录具体时间,在显示的时候可以根据所在时区与UTC时区的偏移经度计算时差,从而得到本地时区正确的具体时间。
2.2配置时区很多国际网站的时间都是以UTC时区记录时间的,然后在用户首次访问网站的时候通过IP地址识别到用户所在地区,根据这个地区的时区经度计算时差,最后显示用户本地的时间出来的。
PHP配置时区需要进入php.ini配置文件里面,搜索“date.timezone”参数,如果是西部地区的朋友就设置成“Asia/Chongqing”,如果是东部地区的朋友就设置成“Asia/Shanghai”,福哥是北京的,但是没有“Asia/Beijing”,福哥也只能设置“Asia/Shanghai”。
date.timezone=Asia/Shanghai3.当前时间3.1UTC时间
前面介绍时区的时候说过了,为了便于针对不同经度地区的人显示当地的时间系统里面存储的最好是UTC时间,获取UTC时间需要用到gmdate函数。
echo"h3当前UTC时间/h3";echogmdate("Y-m-dH:i:s")."\n";3.2本地时间如果要得到对应本地时区的时间需要使用date函数进行时间的获取。
echo"h3当前时区时间/h3";echodate("Y-m-dH:i:s")."\n";4.创建时间如果我们要创建一个时间(或者说是指定一个具体的时间)需要用到mktime函数。
mktime函数可以让我们针对年、月、日、时、分、秒进行特别的定制。而且即便是我们设置一个不存在的日期,例如:2月31日,它依然会返回有效的时间。
echo"h3创建时间/h3";echodate("Y-m-dH:i:s",mktime(null,null,null,2,31,))."\n";5.时间偏移时间偏移就是根据当前时间向前(过去)或者向后(未来)进行推移得到一个过去时间或者未来时间。
5.1未来将当前时间向后偏移可以计算未来的某个时间点。
echo"h3明天/h3";echodate("Y-m-dH:i:s",strtotime("+1day"));echo"h3下周的今天/h3";echodate("Y-m-dH:i:s",strtotime("+1week"));echo"h3距离最近的周日还有".(7-date("w"))."天/h3";echo"h3下个月的今天是周".(date("w",strtotime("+1month")))."/h3";5.2过去将当前时间向前偏移可以计算未来的某个时间点。
echo"h3昨天/h3";echodate("Y-m-dH:i:s",strtotime("-1day"));echo"h3上周的今天/h3";echodate("Y-m-dH:i:s",strtotime("-1week"));echo"h38月8日出生的人去年的生日那天是周".date("w",strtotime("-1year",mktime(0,0,0,8,8)))."/h3";echo"h38月8日出生的人自上次生日到今天过了".((mktime(0,0,0)-strtotime("-1year",mktime(0,0,0,8,8)))/(*24))."天/h3";6.格式化在我们将系统时间输出出来的时候可以通过一些format字符进行格式的自定义,下面是福哥从