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


Posted in PHP onFebruary 02, 2014

今天写程序的时候,突然发现了很早以前写的获取月份天数的函数,经典的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 相关文章推荐
PHP 日常开发小技巧
Sep 23 PHP
解析PHP生成静态html文件的三种方法
Jun 18 PHP
简单的php文件上传(实例)
Oct 27 PHP
php中Session的生成机制、回收机制和存储机制探究
Aug 19 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
Oct 15 PHP
PHP防止注入攻击实例分析
Nov 03 PHP
详解PHP中的null合并运算符
Dec 30 PHP
优化WordPress中文章与评论的时间显示
Jan 12 PHP
Linux环境下php实现给网站截图的方法
May 03 PHP
PHP中Trait及其应用详解
Feb 14 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
Mar 28 PHP
PHP内置函数生成随机数实例
Jan 18 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 #PHP
分享一个超好用的php header下载函数
Jan 31 #PHP
preg_match_all使用心得分享
Jan 31 #PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
Jan 31 #PHP
php curl_init函数用法
Jan 31 #PHP
curl实现站外采集的方法和技巧
Jan 31 #PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 #PHP
You might like
PHP实现MySQL更新记录的代码
2008/06/07 PHP
php下检测字符串是否是utf8编码的代码
2008/06/28 PHP
PHP开发过程中常用函数收藏
2009/12/14 PHP
更换select下拉菜单背景样式的实现代码
2011/12/20 Javascript
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
JavaScript对象和字串之间的转换实例探讨
2013/04/21 Javascript
js style动态设置table高度
2014/10/21 Javascript
初识Node.js
2015/03/20 Javascript
javascript实现随机读取数组的方法
2015/08/03 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
Python3处理文件中每个词的方法
2015/05/22 Python
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
django解决跨域请求的问题详解
2019/01/20 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
Python descriptor(描述符)的实现
2020/11/15 Python
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
经验丰富大学生村干部自我鉴定
2014/01/22 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
大四毕业生自荐书
2014/07/05 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
英文感谢信范文
2015/01/21 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
疾病证明书
2015/06/19 职场文书
2016大学生入党积极分子心得体会
2016/01/06 职场文书