博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP获取上个月最后一天的一个容易忽略的问题
阅读量:6485 次
发布时间:2019-06-23

本文共 866 字,大约阅读时间需要 2 分钟。

正常来说,PHP是有一个很方便的函数可以获取上个月时间的

strtotime

(PHP 4, PHP 5, PHP 7)

strtotime — 将任何英文文本的日期时间描述解析为 Unix 时间戳

说明 ¶

int strtotime ( string $time [, int $now = time() ] )

今天是2016-10-31日,所以strtotime('-1 month'),应该是9月30日

echo date('Y-m-d',strtotime('-1 month'));

可是实际上,输出的是2016-10-01,不但月份没对,日也没对上。

猜测是9月没有31号,所以直接跑到10月1号了。

所以要尝试另一种写法

echo date('Y-m-d',strtotime('-1 month -1 day'));

输出:2016-09-30

这种写法是不是一定没问题的呢?

我想到还要一个特殊的月份,今年的2月29号,所以要尝试一下在2月的时候会不会出问题。
首先查表得2月29号的时间戳是1456675200

echo date('Y-m-d',1456675200); //2016-02-29echo PHP_EOL;echo date('Y-m-d',strtotime('-1 month',1456675200)); //2016-01-29echo PHP_EOL;echo date('Y-m-d',strtotime('-1 month -1 day',1456675200)); //2016-01-28

结果是两个都不对了..

所以终级写法是,先获取本月的第一天,再-1天

$time =  strtotime(date('Y-m-01',1456675200));echo date('Y-m-d',strtotime('-1 day',$time));  //2016-01-31

转载于:https://www.cnblogs.com/jaychan/p/6014965.html

你可能感兴趣的文章
编译安装PHP时两个报错的解决办法
查看>>
System Center 2012 SP1 Data Protection Manager 防止重复备份数据
查看>>
软考复习之路——软考总结
查看>>
Kali linux 2016.2(Rolling)里Metasploit的常用模块
查看>>
企业项目开发--企业中的项目架构以及多环境分配(1)
查看>>
ZOJ 2412 Farm Irrigation
查看>>
C++语言基础(19)-模板的显式具体化
查看>>
[轉]JavaScript获取HTML DOM父,子,临近节点
查看>>
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
查看>>
如何改变Android tab 的高度和字体大小
查看>>
hdu 2853
查看>>
VS2013 MVC Web项目使用内置的IISExpress支持局域网内部机器(手机、PC)访问、调试...
查看>>
Vue.js常用指令:v-show和v-if
查看>>
java自定义接口
查看>>
Codeforces Round #152 (Div. 2) B题 数论
查看>>
马云马化腾等大佬,是如何看待区块链的?
查看>>
10倍于行业增速!海尔冰箱套圈引领
查看>>
Java集合总结【面试题+脑图】,将知识点一网打尽!
查看>>
java基础(十) 数组类型
查看>>
小程序 Canvas绘图不同尺寸设备 UI兼容的两个解决方案
查看>>