在php开辟进程中,经常会用到日期、时候、时候戳的转换、获得等一些操纵,比以下月1日、上周、每月3日;形式多样,层见叠出。可是说到利用,具体的利用方式我记不清了,网上也总是没有很周全的放置。不管在博客上还是官网上,都不周全,有的只是笔墨描写,有的只是简单举例,不适用。 在此根本上,构造本文; 本文几近都是示例; 看起来很是方便。
layui-box layui-code-view" style="margin-top: 10px; margin-bottom: 10px; padding: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); white-space: pre-wrap; overflow-wrap: break-word; box-sizing: content-box; position: relative; font-size: 12px; border-width: 1px 1px 1px 6px; border-style: solid; border-color: rgb(226, 226, 226); border-image: initial; background-color: rgb(242, 242, 242); color: rgb(51, 51, 51); font-family: "Courier New";">code- //时候戳加减时候段,day,week,month,year能否带s都可以,与前面的数字能否有空格也都可以。
- //是以,这个strtotime对格式要求不严酷
- $tt=strtotime("+3 days",$time);//$time 3天以后的时候戳
- $tt=strtotime("+6 month",$time);//$time6个月以后的时候戳
- $tt=strtotime("+1 year 6 months",$time);//指按时候戳1年6个月后的时候戳
-
- $t=time();//当前时候:1545184219,2018-12-19上午9点50
- echo strtotime(date('Y-m-01', $t));//成果是:1543593600(2018/12/1 0:0:0)
- echo strtotime(date('Y-m-10', $t));//成果是:1544371200(2018/12/10 0:0:0)
- echo strtotime(date('Y-m-d 8:0:0', $t));//成果是:1545177600(2018/12/19 8:0:0)
- echo strtotime(date("Y-m-d",time()).' 23:59:59');//当天23:59:59的INT范例时候戳
- echo strtotime(date("Y-m-t", $tt1).' 23:59:59');//按照某一时候戳获得当月最初的时候戳
-
- $t0 = strtotime(date('Y-m-01', strtotime('-1 month', $t)));//上月起点
- $t1 = strtotime(date('Y-m-01'));//本月起点
- $t2 = strtotime(date('Y-m-t 23:59:59'));//本月尽头
-
- //关于生日判定
- $shengri='1986-01-06';
- $date=date("m-d",strtotime($shengri));//成果是:01-06
- $t_date=strtotime(date('Y-'.$date.'8:0:0', time()));//成果是:1546732800(2019/1/6 8:0:0)
关于strtotime()出现的一些希奇的题目 code- date("Y-m-d",strtotime("-1 month"))//假如当前是2018-07-31,则输出2018-07-01
- var_dump(date("Y-m-d", strtotime("2017-06-31")));//输出2017-07-01
虽然这个题目看起来很迷惑, 但从内部逻辑上来说呢, 实在是"没题目"的,由于这样: 我们来模拟下date内部的对于这类工作的处置逻辑: 1. 先做-1 month, 那末当前是07-31, 减去一今后就是06-31. 2. 再做日期标准化, 由于6月没有31号, 所以就似乎2点60即是3点一样, 6月31就即是了7月1
也就是说, 只要触及到巨细月的最初一天, 都能够会有这个迷惑, 我们也可以很轻松的考证类似的其他月份, 印证这个结论: code- var_dump(date("Y-m-d", strtotime("-1 month", strtotime("2017-03-31"))));
- //输出2017-03-03
- var_dump(date("Y-m-d", strtotime("+1 month", strtotime("2017-08-31"))));
- //输出2017-10-01
- var_dump(date("Y-m-d", strtotime("next month", strtotime("2017-01-31"))));
- //输出2017-03-03
- var_dump(date("Y-m-d", strtotime("last month", strtotime("2017-03-31"))));
- //输出2017-03-03
那怎样办呢? 从PHP5.3起头呢, date新增了一系列批改短语, 来明白这个题目, 那就是"first day of" 和 "last day of", 也就是你可以限制好不要让date自动"标准化": code- var_dump(date("Y-m-d", strtotime("last day of -1 month", strtotime("2017-03-31"))));
- //输出2017-02-28
- var_dump(date("Y-m-d", strtotime("first day of +1 month", strtotime("2017-08-31"))));
- //输出2017-09-01
- var_dump(date("Y-m-d", strtotime("first day of next month", strtotime("2017-01-31"))));
- //输出2017-02-01
- var_dump(date("Y-m-d", strtotime("last day of last month", strtotime("2017-03-31"))));
- //输出2017-02-28
|