php开发中经常用到的日期操作函数:
天、时、分、秒操作
strtotime 第一个参数为日期格式化字符串,默认第二个参数当前时间的时间戳
strtotime("2019-01-08") //日期字符串转为时间戳
time() //获取当前时间的时间戳
microtime() //获取当前时间的微秒时间戳
date('Y-m-d H:i:s', time()) //格式化当前时间
date('Y-m-d', strtotime('next day')) //下一天
date('Y-m-d', strtotime('+1 day')) //下一天
date('Y-m-d', strtotime('last day')) //上一天
date('Y-m-d', strtotime('-1 day')) //上一天
date('Y-m-d H:i:s', strtotime("+7 day 2 hour 1 minute 5 second")) //加7天2小时1分钟5秒
date('Y-m-d H:i:s',strtotime("+1 day",strtotime("2017-04-04"))) //以某一个特定时间为基准
周操作
date('Y-m-d H:i:s', strtotime("next week")) //下周一同一时间
date('Y-m-d H:i:s', strtotime("last week")) //上周周一同一时间
周操作的坑
date('Y-m-d H:i:s', strtotime("+1 week")) //加7天后的同一时间,相当于+7 day
date('Y-m-d H:i:s', strtotime("-1 week")) //减7天后的同一时间
月操作
date('Y-m-d H:i:s', strtotime("+1 month")) //上一个月
date('Y-m-d H:i:s', strtotime("-1 month")) //下一个月
**月操作的坑
在这里的加一个月或减一个月是指在当前时间的月份 +1 或者 -1
例如:
当前时间07-31, 减去一以后就是06-31,而6月是没有31号的
因此会自动的日期格式化,所以就好像2点60等于3点一样, 6月31就等于了7月1
这就引发了一个坑,搞的一头雾水
**解决办法:
从PHP5.3开始呢, date新增了一系列修正短语, 来明确这个问题, 那就是”first day of” 和 “last day of”
date('Y-m-d H:i:s', strtotime("first day of +1 month")) //上个月第一天
date('Y-m-d H:i:s', strtotime("last day of +1 month")) //下个月最后一天
网友评论