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

今天写程序的时候,突然发现了很早以前写的获取月份天数的函数,经典的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啦。

总得来说,还是很方便的,日期函数太强大了。

PHP下获取上个月、下个月、本月的日期(strtotime,date),码迷,mamicode.com

时间: 2024-10-07 05:26:22

PHP下获取上个月、下个月、本月的日期(strtotime,date)的相关文章

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

获取本月日期: 代码如下: 1 function getMonth($date){ 2 $firstday = date("Y-m-01",strtotime($date)); 3 $lastday = date("Y-m-d",strtotime("$firstday +1 month -1 day")); 4 return array($firstday,$lastday); 5 } $firstday是月份的第一天,假如$date是2014

PHP获取本月第一天和上个月第一天的日期

<?php // 今天 $today = date('Y-m-d'); // 本月第一天 $this_first_day = strtotime(date('Y-m-01', strtotime($today))); // 上个月第一天 $last_first_day = date('Y-m-01',strtotime(date('Y-m-01', strtotime($today)).' -1 month'));

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

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

UNIX下获取前一天后一天的日期

在Linux下很容易解决这个问题 date  +"%Y%m%d" -d  "+n days"         今天的后n天日期 date  +"%Y%m%d" -d  "-n days"         今天的前n天日期 在UNIX下没有'-d'选项,所以无法使用上面的方法 网上看到有一种通过时区进行调整echo `TZ=aaa16 date +%Y%m%d\ %H:%M:%S` 注意:date打印的并不是本地时区的时间,而是

Easyui获取上个月最后一天的日期,以及获取当前时间的前一天日期

//获取上一个月最后一天的日期 lastDate = function(date){ var day = date.getDate() > 9?(date.getDate()-1):"0" + (date.getDate()-1); var month = (date.getMonth() + 1) > 9?(date.getMonth() + 1):"0"+(date.getMonth() + 1); return date.getFullYear()

用php获取本周,上周,本月,上月,本季度日期的代码

1 echo date("Ymd",strtotime("now")), "\n"; 2 echo date("Ymd",strtotime("-1 week Monday")), "\n"; 3 echo date("Ymd",strtotime("-1 week Sunday")), "\n"; 4 echo date(&q

获取自然月的起始日期和终止日期

获取自然月的起始日期和终止日期, 比如当前为12月5日, 读取10月26日 - 11月25日的数据. import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Ma

C#获取周一、周日的日期,月初,月末,季度第一天,季度最后一天

DateTime dt = DateTime.Now;  //当前时间 DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d")));  //本周周一 DateTime endWeek = startWeek.AddDays(6);  //本周周日 DateTime startMonth = dt.AddDays(1 - dt.Day);  //本月月初 DateTime endMont

c和c++在windows下获取时间和计算时间差的方法总结

c/c++在windows下获取时间和计算时间差的几种方法总结 一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t timer0 ). 精确到秒. 测试程序如下: 1 #include <time.h> 2 #include <stdio.h> 3 4 int main() 5 { 6 time_t start, end; 7 double c