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 正确解码javascript中通过escape编码后的字符
Jan 28 PHP
神盾加密解密教程(三)PHP 神盾解密工具
Jun 08 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
Dec 14 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
Jan 19 PHP
php安全配置记录和常见错误梳理(总结)
Mar 28 PHP
Yii2中添加全局函数的方法分析
May 04 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
Oct 17 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
May 02 PHP
PHP底层运行机制与工作原理详解
Jul 31 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
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
php 多线程上下文中安全写文件实现代码
2009/12/28 PHP
smarty模板引擎之分配数据类型
2015/03/30 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
一句话JavaScript表单验证代码
2009/08/02 Javascript
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
Angularjs 基础入门
2014/12/26 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
2017/08/17 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
element-ui中select组件绑定值改变,触发change事件方法
2018/08/24 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
2020/10/29 Javascript
[48:27]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
python机器学习实战之K均值聚类
2017/12/20 Python
python实现K最近邻算法
2018/01/29 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
如何在django中运行scrapy框架
2020/04/22 Python
Python 代码调试技巧示例代码
2020/08/11 Python
金牌葡萄酒俱乐部:Gold Medal Wine Club
2017/11/02 全球购物
悬挂训练绳:TRX
2017/12/14 全球购物
大学生毕业自我鉴定范文
2013/09/19 职场文书
语文教研活动总结
2014/07/02 职场文书
销售内勤岗位职责
2015/02/10 职场文书
python基础之匿名函数详解
2021/04/21 Python
vue引入Excel表格插件的方法
2021/04/28 Vue.js
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
详解Python魔法方法之描述符类
2021/05/26 Python