首页 » 网站建设 » mktimephp技巧_PHP编程鸟哥令人困惑的strtotime

mktimephp技巧_PHP编程鸟哥令人困惑的strtotime

duote123 2024-10-26 0

扫一扫用手机浏览

文章目录 [+]

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

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

mktimephp技巧_PHP编程鸟哥令人困惑的strtotime

鸟哥,本日是2018-07-31 实行代码,为什么我实行date(\公众Y-m-d\"大众,strtotime(\"大众-1 month\公众)),却返回2018-07-01呢?

mktimephp技巧_PHP编程鸟哥令人困惑的strtotime
(图片来自网络侵删)

好的吧,虽然这个问题看起来很迷惑,但从内部逻辑上来说呢,实在是“对”的,你先别焦急哈, 让我逐步讲。

我们来仿照下date内部的对付这种事情的处理逻辑:

1. 先做-1 month,那么当前是07-31,减去一往后便是06-312. 再做日期规范化,由于6月没有31号, 以是就彷佛2点60即是3点一样, 6月31就即是7月1了

是不是逻辑很”清晰”呢?如果你还不明白, 我们也可以手动验证第二个步骤,比如:

var_dump(date(\公众Y-m-d\"大众, strtotime(\"大众2017-06-31\公众)));

上面这一行代码实行完后,其结果也会返回2017-07-01。
也便是说,只要涉及到大小月的末了一天,都可能会有这个迷惑,我们也可以很轻松的验证类似的其他月份, 印证这个结论:

那怎么办呢?

从PHP5.3开始呢, date新增了一系列改动短语,来明确这个问题,那便是“first day of” 和 “last day of”, 也便是你可以限定好不要让date自动”规范化”:

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

现在,搞清楚了内部事理, 是不是就不慌了?

本文转载自”风雪之隅“,由”编码之道“编辑整理

标签:

相关文章

360极速设置百度搜索,极速百度

搜索引擎已成为人们获取信息的重要途径。360极速设置作为一款优秀的浏览器插件,凭借其独特的功能,为广大用户带来了更加便捷、高效的搜...

网站建设 2025-04-02 阅读1 评论0

360流浪器搜索引擎,360浏览

搜索引擎已经成为我们生活中不可或缺的一部分。在众多搜索引擎中,360流浪器搜索引擎以其独特的优势和特点,赢得了广大用户的青睐。本文...

网站建设 2025-04-02 阅读1 评论0

360浏览器搜索速影TV,360极速浏览器官网

智能电视已经成为家庭娱乐的中心。而在这其中,速影TV凭借其卓越的性能、丰富的内容和人性化的设计,成为了市场上备受瞩目的智能电视品牌...

网站建设 2025-04-02 阅读1 评论0