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 相关文章推荐
怎么使 Mysql 数据同步
Oct 09 PHP
PHP 高手之路(三)
Oct 09 PHP
php变量范围介绍
Oct 15 PHP
解析php中die(),exit(),return的区别
Jun 20 PHP
关于PHP堆栈与列队的学习
Jun 21 PHP
修改apache配置文件去除thinkphp url中的index.php
Jan 17 PHP
php字符串函数学习之strstr()
Mar 27 PHP
[原创]php简单隔行变色功能实现代码
Jul 09 PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 PHP
php str_getcsv把字符串解析为数组的实现方法
Apr 05 PHP
PHP基于GD库实现的生成图片缩略图函数示例
Jul 05 PHP
PHP开发实现快递查询功能详解
Apr 08 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管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
jQuery 页面 Mask实现代码
2010/01/09 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
基于jQuery实现搜索关键字自动匹配功能
2020/03/26 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
js实现一键复制功能
2017/03/16 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
vue实现word,pdf文件的导出功能
2018/07/31 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
js实现带积分弹球小游戏
2020/07/21 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
Python获取文件所在目录和文件名的方法
2017/01/12 Python
Python 含参构造函数实例详解
2017/05/25 Python
python中正则表达式的使用方法
2018/02/25 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
2019/09/30 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
描述一下JVM加载class文件的原理机制
2013/12/08 面试题
模具设计与制造专业应届生求职信
2013/10/18 职场文书
学年末自我鉴定
2014/01/21 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
欠款起诉书范文
2015/05/19 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
2016年小学圣诞节活动总结
2016/03/31 职场文书
vue修饰符.capture和.self的区别
2022/04/22 Vue.js