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

 <?php
/**
*参考有:
*http://www.oschina.net/code/snippet_96541_4015
*http://stackoverflow.com/questions/5489502/how-to-get-previous-month-and-year-relative-to-today-using-strtotime-and-date
*/
$prevDates = ""; //保存最后返回的日期
$dates = "2014-12-30"; //当前需要测试的日期
$nowdays = intval(date("d",strtotime($dates))); //獲取當前月的日期
$datestring=$dates.' first day of last month';
$dt=date_create($datestring);
$prevDate = $dt->format('Y-m-d'); //獲取上個月的1号 $days = date('t', strtotime($prevDate)); //獲取上個月的天數 //当前月的日期小于或等于上个月的天数时
if($days >= $nowdays)
{
$prevDates =$dt->format('Y-m')."-".$nowdays;
}else if($days < $nowdays){
//当前月的日期大于上个月的天数时
$prevDates =$dt->format('Y-m')."-".$days;
} //输出最后返回的日期
var_dump($prevDates); ?>

查看代码

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

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

主要想法:

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

PHP 获取当前日期的上个月的日期的更多相关文章

  1. Smarty 获取当前日期时间和格式化日期时间

    在Smarty 中获取当前日期时间和格式化日期时间与PHP中有些不同的地方,这里就为您详细介绍: 首先是获取当前的日期时间:在PHP中我们会使用date函数来获取当前的时间,实例代码如下:date(& ...

  2. JS获取当前日期时间及JS日期格式化

    Js获取当前日期时间: var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份( ...

  3. Java -- 获取当前日期、当月月初日期、月末日期

    Learn From:http://blog.csdn.net/sunhuwh/article/details/39161323 public class CalendarTest { public ...

  4. javascript 添加行,删除行,datepicker获取当前日期和上一个月日期并设置格式,笔记

    $(function () { getdatepicker(); today(); getPreMonth(); getdatetimepicker(); }); function today(){ ...

  5. Java,Calendar -- 获取当前日期、当月月初日期、月末日期

    public class CalendarTest { public static void main(String[] args) { // 获取当前年份.月份.日期 Calendar cale = ...

  6. TypeScript 2 : 获取当前日期及前后范围日期【Array】

    前言 今天有个接口字段需求,要写一个今天及前几天的日期传过去: 在网上找了下都木有什么比较好的方案:就自己写了一个. 因为技术栈就是NG2+TS2+WEBPACK,这里的代码需要一定的TS2及ES6的 ...

  7. 获取当前日期,或指定日期的农历js代码

    时间不早了,直接上代码啦-- var CalendarData=new Array(100);var madd=new Array(12);var tgString="甲乙丙丁戊己庚辛壬癸& ...

  8. php获取当前日期开始一周日期与星期几

    不说了,对于PHPer来说,写不出来说什么都是白瞎,不喜勿喷~~~~ function get_week(){ $data = []; $format='Y-m-d'; for ($i=0; $i&l ...

  9. RF中采用python方法获取当月1号、上月1号、下月1号、当前日期N天后日期、当前日期N天前日期、指定月份总天数、上个月份、下个月份、当月最后1天日期、上个月最后1天日期、下个月最后1天日期

    ${TodayDate} evaluate datetime.date.today().strftime('%Y%m%d') datetime ${CurrentMonthFirstDay} eval ...

随机推荐

  1. WPF——数据绑定及属性改变事件

    一.首先需要封装一下文本框的属性,并且在实体类中添加一个实体类的属性改变函数 public class User : INotifyPropertyChanged //INotifyPropertyC ...

  2. bzoj1266

    第一问不谈, 第二问首先我们要找出哪些是s到t的最短路上的边 由于是无向图,首先正反两遍最短路,求出是s到任意点的距离,任意点到t的距离(即t到任意点的距离): 然后穷举每条边判断是否在最短路上用d[ ...

  3. 【转】解决wine中文乱码的问题

    原文网址:http://blog.chinaunix.net/uid-24993439-id-2979620.html 新装的wine中文全是乱码,需要修改一下几个配置文件,找到一篇比较详细的配置说明 ...

  4. uboot环境变量(设置bootargs向linux内核传递正确的参数)

    这是我uboot的环境变量设置,在该设置下可以运行initram内核(从内存下载到nandflash再运行),但是运行nfs根文件系统的时候一直出错,各种错误.查看了很多资料后猜想应该是uboot传递 ...

  5. android 后台附件下载

    在service中通过在oncreat()中开启一个线程,轮训ArrayList<AttachmentTask> 我这个附件下载的任务list ,ArrayList<Attachme ...

  6. Linux中_ALIGN宏背后的原理——内存对齐

    转载自: http://englishman2008.blog.163.com/blog/static/2801290720114210254690/ 1. 原理    int a;     int ...

  7. Scala学习笔记(一)数据类型

    .类型参数化数组 val arrayString = Array[String](2); arrayString (0)="Hello"; arrayString (1)=&quo ...

  8. HW5.24

    import java.util.Calendar; public class Solution { public static void main(String[] args) { System.o ...

  9. HUD-4602 Partition 排列

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4602 把n等效为排成一列的n个点,然后就是取出其中连续的k个点.分两种情况,一种是不包含两端,2^( ...

  10. 问题-[WIN8.132位系统]安装Win8.1 遇到无法升级.NET Framework 3.5.1

    问题现象:安装Win8后都遇到了无法升级.NET Framework 3.5.1的问题,在线升级会遇到错误0x800F0906.这使得91手机助手等很多软件无法运行,更郁闷的是,网上几乎所有的解决办法 ...