php使用strtotime技巧示例解惑

php使用strtotime技巧示例解惑

引言

经常会有人被 strtotime 结合 - 1 month, +1 month, next month 的时候搞得很困惑,然后就会觉得这个函数有点不那么靠谱,动不动就出问题。用的时候就会很慌…

这不,刚刚就有人在微博上又问我:

date("Y-m-d",strtotime("-1 month"))

今天是 2018-07-31 执行代码,怎么输出是 2018-07-01?

好的吧,虽然这个问题看起来很迷惑,但从内部逻辑上来说呢,其实是” 对” 的,你先别着急哈,让我慢慢讲:

我们来模拟下 date 内部的对于这种事情的处理逻辑:

先做 - 1 month, 那么当前是 07-31, 减去一以后就是 06-31.
再做日期规范化,因为 6 月没有 31 号,所以就好像 2 点 60 等于 3 点一样,6 月 31 就等于了 7 月 1
是不是逻辑很” 清晰” 呢?我们也可以手动验证第二个步骤,比如:

var_dump(date("Y-m-d", strtotime("2017-06-31"))); //输出2017-07-01

也就是说,只要涉及到大小月的最后一天,都可能会有这个迷惑,我们也可以很轻松的验证类似的其他月份,印证这个结论:

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 自动” 规范化”:

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

那如果是 5.3 之前的版本 (还有人用么?), 你可以使用 mktime 之类的,把所有的日子忽略掉,比如都限定为每月 1 号就可以了,只不过就不如直接用 first day 来的更加优雅.

以上就是php使用strtotime技巧示例解惑的详细内容,更多关于php strtotime解惑的资料请关注易知道(ezd.cc)其它相关文章!

推荐阅读

    excel怎么用乘法函数

    excel怎么用乘法函数,乘法,函数,哪个,excel乘法函数怎么用?1、首先用鼠标选中要计算的单元格。2、然后选中单元格后点击左上方工具栏的fx公

    电脑输出接音箱|电脑音箱接线

    电脑输出接音箱|电脑音箱接线,,电脑音箱接线把三根的视频线(黄、红、白)按颜色插入电视机的输入,黄色插DVD的视频输出,红白插DVD的左右声道,电

    excel中乘法函数是什么?

    excel中乘法函数是什么?,乘法,函数,什么,打开表格,在C1单元格中输入“=A1*B1”乘法公式。以此类推到多个单元。1、A1*B1=C1的Excel乘法公式

    标准差excel用什么函数?

    标准差excel用什么函数?,函数,标准,什么,在数据单元格的下方输入l标准差公式函数公式“=STDEVPA(C2:C6)”。按下回车,求出标准公差值。详细

    excel常用函数都有哪些?

    excel常用函数都有哪些?,函数,哪些,常用,1、SUM函数:SUM函数的作用是求和。函数公式为=sum()例如:统计一个单元格区域:=sum(A1:A10)  统计多个

    aes接口的电脑|AES输出

    aes接口的电脑|AES输出,,1. AES输出 斯巴克cayinm-50cd 播放机是斯巴克公司最近设计的一款高档CD机,利用专业升频芯片处理软件,将声频提升