PHP下获取上个月、下个月、本月的日期

 因为工作需要需要获取上个月、下个月、本月的日期,特从网站找到了实现代码,特分享下,方便需要的朋友

今天写程序的时候,突然发现了很早以前写的获取月份天数的函数,经典的switch版,但是获得上月天数的时候,我只是把月份-1了,估计当时太困了吧,再看到有种毛骨悚然的感觉,本来是想再处理一下的,但是一想肯定还有什么超方便的方法,于是找到了下面这个版本,做了一点小修改。
 
获取本月日期:
 
代码如下:
function getMonth($date){
     $firstday = date("Y-m-01",strtotime($date));
     $lastday = date("Y-m-d",strtotime("$firstday +1 month -1 day"));
     return array($firstday,$lastday);
 }
 
 
$firstday是月份的第一天,假如$date是2014-2这样的话,$firstday就会是2014-02-01,然后根据$firstday加一个月就是2014-03-01,再减一天就是2014-02-28,用date()和strtotime()真是太方便了。
 
  获取上月日期:
 
 代码如下:
function getlastMonthDays($date){
     $timestamp=strtotime($date);
     $firstday=date('Y-m-01',strtotime(date('Y',$timestamp).'-'.(date('m',$timestamp)-1).'-01'));
     $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day"));
     return array($firstday,$lastday);
 }
 
 
上月日期需要先获取一个时间戳,然后在月份上-1就OK了,超智能的date()会把2014-0-1这种东西转换成2013-12-01,太爽了。
 
  获取下月日期:
 
代码如下:
function getNextMonthDays($date){
    $timestamp=strtotime($date);
    $arr=getdate($timestamp);
    if($arr['mon'] == 12){
        $year=$arr['year'] +1;
        $month=$arr['mon'] -11;
        $firstday=$year.'-0'.$month.'-01';
        $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day"));
    }else{
        $firstday=date('Y-m-01',strtotime(date('Y',$timestamp).'-'.(date('m',$timestamp)+1).'-01'));
        $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day"));
    }
    return array($firstday,$lastday);
}
 
 
下月日期的代码看起来比较长一点,因为date()转不了类似2014-13-01这种东西,它会直接回到1970,所以前面需要处理一下12月的问题,除了12月就直接月份+1就OK啦。
 
总得来说,还是很方便的,日期函数太强大了。
 

时间: 2024-09-08 05:19:48

PHP下获取上个月、下个月、本月的日期的相关文章

PHP下获取上个月、下个月、本月的日期(strtotime,date)_php技巧

今天写程序的时候,突然发现了很早以前写的获取月份天数的函数,经典的switch版,但是获得上月天数的时候,我只是把月份-1了,估计当时太困了吧,再看到有种毛骨悚然的感觉,本来是想再处理一下的,但是一想肯定还有什么超方便的方法,于是找到了下面这个版本,做了一点小修改. 获取本月日期: 复制代码 代码如下: function getMonth($date){     $firstday = date("Y-m-01",strtotime($date));     $lastday = da

oracle获取今天到上个月1号的日期

问题描述 oracle获取今天到上个月1号的日期 比如今天是 2016年5月10日 上个月是4月1日 我要获取这段时间内的每一天 存储过程怎么写呢 ,感谢! 解决方案 Oracle获取上个月和下个月 解决方案二: SELECT TO_DATE('2016/04/01' , 'yyyy/mm/dd ' ) +LEVEL - 1 FROM DUAL CONNECT BY LEVEL <= TRUNC(TO_DATE('2016/05/10', 'yyyy/mm/dd') - TO_DATE('201

bat获取上个月份及删除指定日期的文件

bat获取上个月份 如果要在每月初备份上个月的文件就需要获取上月的月份,需要注意的是1月份的上个月是去年12月,还有就是通过当前月份-1 来获得上个月份时如果是11一下的数减1的结果需要处理.还有要注意的是在if和for中使用变量替换时最好启用延迟变量,并使其!对变量进行引用  代码如下 复制代码 ? @echo off setlocal EnableDelayedExpansion pause rem ################# 获得上个月的日期 ###################

Linux下获取代码文件名、代码所在行数及日期时间的C程序实现

一.概述 在实际的软件开发项目中,为了方便排查程序问题,要求在日志文件中输出日志信息所在的程序文件名及日志代码所在的行数.此外,某些软件还会要求将程序启动时的日期时间输出到日志文件中,方便跟踪软件运行状况. 本文介绍了Linux下获取代码文件名.代码行数及日期时间的C代码实现. 二.几个标准预定义宏简介 在C语言中,使用几个标准预定义宏,便可轻松实现获取代码文件名.代码行数及日期时间的功能. 这几个宏的定义如下(注意:前后都是两条连续的下划线): __FILE__:在源文件中插入当前源文件名.

asp.net获取本周、本月、本季度等时间段

asp教程.net获取本周.本月.本季度等时间段 C#中datetime的使用 //如果你还不明白,再看一下中文显示星期几的方法就应该懂了 //由于DayOfWeek返回的是数字的星期几,我们要把它转换成汉字方便我们阅读,有些人可能会用switch来一个一个地对照,其实不用那么麻烦的 string[] Day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四"

JS 获取 本周、本月、本季度、本年、上月、上周、上季度、去年

原文:JS 获取 本周.本月.本季度.本年.上月.上周.上季度.去年 工具类定义: /** * 日期范围工具类 */ var dateRangeUtil = (function () { /*** * 获得当前时间 */ this.getCurrentDate = function () { return new Date(); }; /*** * 获得本周起止时间 */ this.getCurrentWeek = function () { //起止日期数组 var startStop = n

Dos下获取系统时间的代码

dos下获取系统时间的实现代码,需要的朋友可以参考下   复制代码 代码如下:   rem DOS get current time  rem =======================  rem get yyyy/mm/dd  set mydate=%DATE:~0,10%  echo %mydate%  rem =======================  rem get yyyy  set yyyy=%DATE:~0,4%  echo %yyyy%  rem ===========

Dos下获取系统时间的代码_DOS/BAT

复制代码 代码如下:   rem DOS get current time  rem =======================  rem get yyyy/mm/dd  set mydate=%DATE:~0,10%  echo %mydate%  rem =======================  rem get yyyy  set yyyy=%DATE:~0,4%  echo %yyyy%  rem =======================  rem get mm  set

php获取上个月的最后一天

用php获取上个月最后一天的时间,有两种方法,都非常简单,详细实现源码如下:   <?php date_default_timezone_set("PRC"); //设置时区 //方法一 $times = date("d") * 24 * 3600; echo date("Y-m-d H:i:s", time()-$times); echo '<br/>'; //方法二 $day = date('d'); echo date(&