PHP 获取当前日期的上个月的日期

获取当前日期的上个月的日期

 1 <?php
 2 /**
 3 *参考有:
 4 *http://www.oschina.net/code/snippet_96541_4015
 5 *http://stackoverflow.com/questions/5489502/how-to-get-previous-month-and-year-relative-to-today-using-strtotime-and-date
 6 */
 7 $prevDates = ""; //保存最后返回的日期
 8 $dates = "2014-12-30"; //当前需要测试的日期
 9 $nowdays = intval(date("d",strtotime($dates))); //獲取當前月的日期
10 $datestring=$dates.' first day of last month';
11 $dt=date_create($datestring);
12 $prevDate = $dt->format('Y-m-d'); //獲取上個月的1号
13 
14 $days = date('t', strtotime($prevDate)); //獲取上個月的天數
15 
16 //当前月的日期小于或等于上个月的天数时
17 if($days >= $nowdays)
18 {
19     $prevDates =$dt->format('Y-m')."-".$nowdays;
20 }else if($days < $nowdays){
21     //当前月的日期大于上个月的天数时
22     $prevDates =$dt->format('Y-m')."-".$days;
23 }    
24 
25 //输出最后返回的日期
26 var_dump($prevDates);
27 
28 ?>
查看代码

哇哈哈哈哈哈,下面的文字,可能会让你看晕,不知所云,还是使用上面的代码,自己尝试运行一下,实践见真理哦。

-------------------------------------------分割线--------------------------------------------------------------

主要想法:

1.获取当前日期的日期,如:2014-10-30,先获取到30

2.获取当前日期的上个月的第一天,如:2014-09-01

3.计算出上个月的日期的天数,如:2014-09 有30天

4.用 当前日期的日期(下面用"日期"表示)和上个月的日期的天数(下面用"天数"说明)来对比

  1.   日期 小于或等于 天数,使用当前日期的日期做上个月的日期(可能这里有点晕)
  2.   日期  大于  天数,使用天数来做上个月的日期

具体数据:

设定当前日期为:2014-10-30

1.获取到日期为:30号

2.上个月的第一天为:2014-09-01

3.计算出9月的天数为:30 天

4.判断 日期(30号) 和 天数(30天)

  1.  日期(30) 等于 天数(30),最后返回日期为:2014-09-30
原文地址:https://www.cnblogs.com/fsong/p/4001733.html