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 Smarty生成EXCEL文档的代码
Aug 23 PHP
PHP 操作文件的一些FAQ总结
Feb 12 PHP
php自定义函数call_user_func和call_user_func_array详解
Jul 14 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
Jan 10 PHP
用php实现百度网盘图片直链的代码分享
Nov 01 PHP
php抓取页面的几种方法详解
Jun 17 PHP
探讨:php中在foreach中使用foreach ($arr as &$value) 这种类型的解释
Jun 24 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
Apr 03 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
PHP执行linux命令常用函数汇总
Feb 02 PHP
yii2.0实现pathinfo的形式访问的配置方法
Apr 06 PHP
PHP实现的多维数组排序算法分析
Feb 10 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用header函数实现301跳转代码实例
2013/11/25 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
微信小程序 如何引入外部字体库iconfont的图标
2018/01/31 Javascript
JS基于封装函数实现的表格分页完整示例
2018/06/26 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
Python中几种导入模块的方式总结
2017/04/27 Python
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
VScode编写第一个Python程序HelloWorld步骤
2018/04/06 Python
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
python调用c++传递数组的实例
2019/02/13 Python
python控制nao机器人身体动作实例详解
2019/04/29 Python
Django实现随机图形验证码的示例
2020/10/15 Python
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
工商管理毕业生推荐信
2013/12/24 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014最新党员违纪检讨书
2014/10/12 职场文书
车辆年检委托书范本
2014/10/14 职场文书
关于环保的宣传稿
2015/07/23 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android