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中变量及部分适用方法
Mar 27 PHP
通过JavaScript或PHP检测Android设备的代码
Mar 09 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
Aug 21 PHP
php实现将任意进制数转换成10进制的方法
Apr 17 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
Linux平台PHP5.4设置FPM线程数量的方法
Nov 09 PHP
PHP静态成员变量
Feb 14 PHP
php实现数组重复数字统计实例
Sep 30 PHP
php多进程模拟并发事务产生的问题小结
Dec 07 PHP
PHP中$GLOBALS与global的区别详解
Mar 21 PHP
java解析json方法总结
May 16 PHP
php面向对象重点知识分享
Sep 27 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
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
smarty模板中拼接字符串的方法
2014/02/14 PHP
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
Javascript操纵Cookie实现购物车程序
2006/11/23 Javascript
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
jQuery控制TR显示隐藏的几种方法
2014/06/18 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
python查询mysql,返回json的实例
2018/03/26 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
python实现websocket的客户端压力测试
2019/06/25 Python
python实现对变位词的判断方法
2020/04/05 Python
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
创建无烟单位实施方案
2014/03/29 职场文书
涪陵白鹤梁导游词
2015/02/09 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
pytorch中的model=model.to(device)使用说明
2021/05/24 Python
java泛型通配符详解
2021/07/25 Java/Android
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers