我需要获取相对于当前日期的上一个月和年份。
但是,请看下面的例子。
// Today is 2011-03-30
echo date('Y-m-d', strtotime('last month'));
// Output:
2011-03-02
这种行为在一定程度上是可以理解的,因为二月和三月的天数不同。上面的示例代码是我所需的内容,但仅在每个月的1日到28日之间完全正确地工作。那么,如何以最优雅的方式获取上个月和年份(考虑使用
date("Y-m")
),并且适用于每年365天?最佳解决方案将基于strtotime
参数解析。更新。稍微澄清一下要求。
我有一段代码可以获取最近几个月的一些统计数据,但我首先显示上个月的统计数据,然后在需要时加载其他月份的数据。这是预期的目的。因此,在本月期间,我想找出我应该拉取哪个月-年份以加载上一个月的统计数据。
我还有一个时区感知的代码(现在并不重要),它接受
strtotime
兼容的字符串作为输入(用于初始化内部日期),然后允许使用strtotime
兼容的字符串调整日期/时间。我知道可以使用几个条件和基本数学运算来完成,但与此相比,真的很混乱,例如:
echo tz::date('last month')->format('Y-d')
所以,我只需要上个月和年份,以符合strtotime
的格式。
回答(感谢@dnagirl):
// Today is 2011-03-30
echo date('Y-m-d', strtotime('first day of last month')); // Output: 2011-02-01