我需要获得上一个月和一年,相对于当前日期。
但是,请参阅以下示例。
// Today is 2011-03-30
echo date('Y-m-d', strtotime('last month'));
// Output:
2011-03-02
这个行为是可以理解的(到某一点),由于在2月和3月不同的天数,上面的例子中的代码是我需要的,但在每月的1月和28日之间正确工作只有100%。
那么,如何获得上个月和年份(认为日期(“Y-m”))以最优雅的方式尽可能,这一年的每一天工作?最佳解决方案将基于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