你所不知道 ❌ PHP Time

0.说明

  • 凯子翔逼你知道3月31日1个月几月几号嘛?
  • 翔逼:当然是4月30号,泥484傻~
  • 凯子:真的嘛?你试试下面的代码。
  • 翔逼:啊咧咧?怎么会是5月1日
  • 凯子:嘿嘿,自己去了解吧。

1.时间都去哪了

0.说明

PHP中,加1个月是加自身月份天数。所以,当3月31日加一个月的时候,就变成了加31天,也就是5月1日

在实际开发中对时间进行处理的时候,在月份的最后1天处理上,一个不小心就会踩到这个坑啦。

1.本月份的第一天

代码
$date = '20160330';

echo date('Y-m-01', strtotime($date));
输出
2016-03-01

2.本月份的最后一天

代码
$date = '20160328';

$firstDay = date('Y-m-01', strtotime($date));

echo date('Y-m-d', strtotime('+1 month -1 day', strtotime($firstDay)));
输出
2016-03-31

3.下月份的第一天

代码
$date = '20160328';

$firstDay = date('Y-m-01', strtotime($date));

echo date('Y-m-d', strtotime('+1 month', strtotime($firstDay)));
输出
2016-04-01

4.下月份的最后一天

代码
$date = '20160328';

$firstDay = date('Y-m-01', strtotime($date));

echo date('Y-m-d', strtotime('+2 month -1 day', strtotime($firstDay)));
输出
2016-04-30

5.上月份的第一天

代码
$date = '20160328';

$firstDay = date('Y-m-01', strtotime($date));

echo date('Y-m-d', strtotime('-1 month', strtotime($firstDay)));
输出
2016-02-01

6.上月份的最后一天

代码
$date = '20160328';

$firstDay = date('Y-m-01', strtotime($date));

echo date('Y-m-d', strtotime('-1 day', strtotime($firstDay)));
输出
2016-02-29

2.结论

  • PHP会根据当前月份来确定1个月多少天
  • 对于最后1天的计算,可以转化为对第1天的计算。
  • 注意每个月的天数可能为 28,29,3031

一起成长

在困惑的城市里总少不了并肩同行的 伙伴 让我们一起成长。
  • 如果您想让更多人看到文章可以点个 点赞
  • 如果您想激励小二可以到 Github 给个 小星星
  • 如果您想与小二更多交流添加微信 m353839115

本文原稿来自 PushMeTop

你可能感兴趣的:(datetime,date,time,php)