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


Posted in PHP onDecember 30, 2015

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

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

最后简单介绍下strtotime的用法

获取指定日期的unix时间戳

strtotime("2009-1-22") 示例如下:

echo strtotime("2009-1-22")

结果:1232553600

说明:返回2009年1月22日0点0分0秒时间戳

获取英文文本日期时间

示例如下:

便于比较,使用date将当时间戳与指定时间戳转换成系统时间

(1)打印明天此时的时间戳strtotime("+1 day")

当前时间:

echo date("Y-m-d H:i:s",time())

结果:2009-01-22 09:40:25

指定时间:

echo date("Y-m-d H:i:s",strtotime("+1 day"))

结果:2009-01-23 09:40:25

(2)打印昨天此时的时间戳strtotime("-1 day")

当前时间:

echo date("Y-m-d H:i:s",time())

结果:2009-01-22 09:40:25

指定时间:

echo date("Y-m-d H:i:s",strtotime("-1 day"))

结果:2009-01-21 09:40:25

(3)打印下个星期此时的时间戳strtotime("+1 week")

当前时间:

echo date("Y-m-d H:i:s",time())

结果:2009-01-22 09:40:25

指定时间:

echo date("Y-m-d H:i:s",strtotime("+1 week"))

结果:2009-01-29 09:40:25

(4)打印上个星期此时的时间戳strtotime("-1 week")

当前时间:

echo date("Y-m-d H:i:s",time())

结果:2009-01-22 09:40:25

指定时间:

echo date("Y-m-d H:i:s",strtotime("-1 week"))

结果:2009-01-15 09:40:25

(5)打印指定下星期几的时间戳strtotime("next Thursday")

当前时间:

echo date("Y-m-d H:i:s",time())

结果:2009-01-22 09:40:25

指定时间:

echo date("Y-m-d H:i:s",strtotime("next Thursday"))

结果:2009-01-29 00:00:00

(6)打印指定上星期几的时间戳strtotime("last Thursday")

当前时间:

echo date("Y-m-d H:i:s",time())

结果:2009-01-22 09:40:25

指定时间:

echo date("Y-m-d H:i:s",strtotime("last Thursday"))

结果:2009-01-15 00:00:00

以上示例可知,strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date()格式化日期时间获取指定的时间戳,实现所需要的日期时间。

PHP 相关文章推荐
php将数据库导出成excel的方法
May 07 PHP
php下通过IP获取地理位置的代码(小偷程序)
Jun 09 PHP
PHP多文件上传类实例
Mar 07 PHP
浅谈使用PHP开发微信支付的流程
Oct 04 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
Jun 28 PHP
谈谈PHP连接Access数据库的注意事项
Aug 12 PHP
ThinkPHP开发--使用七牛云储存
Sep 14 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 PHP
PHP Class SoapClient not found解决方法
Jan 20 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
Jun 19 PHP
php文件操作之文件写入字符串、数组的方法分析
Apr 15 PHP
Laravel使用Queue队列的技巧汇总
Sep 02 PHP
分享PHP守护进程类
Dec 30 #PHP
如何写php守护进程(Daemon)
Dec 30 #PHP
PHP汉字转换拼音的函数代码
Dec 30 #PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 #PHP
php获取当前页面完整URL地址
Dec 30 #PHP
详解WordPress中添加和执行动作的函数使用方法
Dec 29 #PHP
详解WordPress中创建和添加过滤器的相关PHP函数
Dec 29 #PHP
You might like
php采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
详解php中的implements 使用
2017/06/13 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
六款帮助你实现惊艳视差滚动效果的jQuery插件
2012/09/14 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
用js一次改变多个input的readonly属性值的方法
2014/06/11 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
js判断主流浏览器类型和版本号的简单实现代码
2016/05/26 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
微信小程序实现锚点功能
2019/11/20 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
2020/03/06 Javascript
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
Python2.x和3.x下maketrans与translate函数使用上的不同
2015/04/13 Python
python使用range函数计算一组数和的方法
2015/05/07 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
python记录程序运行时间的三种方法
2017/07/14 Python
Python进阶之尾递归的用法实例
2018/01/31 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
Python如何读取文件中图片格式
2020/01/13 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
动态密码技术
2012/10/18 面试题
购房意向书范本
2014/04/01 职场文书
初中家长评语大全
2014/12/26 职场文书
防卫过当辩护词
2015/05/21 职场文书