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实现框架(一)
Oct 09 PHP
PHP 文件系统详解
Sep 13 PHP
php删除文件夹及其文件夹下所有文件的函数代码
Jan 23 PHP
用php制作简单分页(从数据库读取记录)的方法详解
May 04 PHP
PHP Class&Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
php设置允许大文件上传示例代码
Mar 10 PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 PHP
CodeIgniter常用知识点小结
May 26 PHP
PHP常用的三种设计模式汇总
Aug 28 PHP
PHP写API输出的时用echo的原因详解
Apr 28 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 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
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
jQuery html()等方法介绍
2009/11/18 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
2009/12/07 Javascript
jQuery 图片切换插件(代码比较少)
2012/05/07 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
javascript实现拖动元素交换位置
2015/11/29 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
2018/01/17 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
2019/04/19 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
python写xml文件的操作实例
2014/10/05 Python
python使用webbrowser浏览指定url的方法
2015/04/04 Python
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
Python IDLE清空窗口的实例
2018/06/25 Python
PYQT5实现控制台显示功能的方法
2019/06/25 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
马来西亚与新加坡长途巴士售票网站:BusOnlineTicket.com
2018/11/05 全球购物
英国景点门票网站:attractiontix
2019/08/27 全球购物
农林环境专业求职信
2014/03/13 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python
MongoDB balancer的使用详解
2021/04/30 MongoDB
详解JS ES6编码规范
2021/05/07 Javascript