我检查了我的php.ini文件,并设置了显示错误,还有错误报告display_errors.我重新启动了我的Apache Web服务器.
我甚至把这些行放在我的脚本的顶部,它甚至没有捕获简单的解析错误.例如,我使用a声明变量,E_ALL而不是关闭语句"$".但是我的所有脚本都显示这些错误的空白页面,但我想在浏览器输出中看到错误.
error_reporting(E_ALL);
ini_set('display_errors', 1);
Run Code Online (Sandbox Code Playgroud)
还剩下什么?
相对于当前日期,我需要获得上个月和上年.
但是,请参阅以下示例.
// Today is 2011-03-30
echo date('Y-m-d', strtotime('last month'));
// Output:
2011-03-02
Run Code Online (Sandbox Code Playgroud)
由于2月和3月的天数不同,这种行为是可以理解的(在某一点上),上面的例子中的代码是我需要的,但是每个月的1号和28号之间只能正确地工作100%.
那么,如何以date("Y-m")最优雅的方式获得上个月和一年(想想),这适用于一年中的每一天?最佳解决方案将基于strtotime参数解析.
更新.稍微澄清一下要求.
我有一段代码可以获得过去几个月的统计数据,但我首先显示上个月的统计数据,然后在需要时加载其他月份.这是预期的目的.所以,在这个月里,我想知道我应该在哪个月份来加载上个月的统计数据.
我还有一个时区感知的代码(现在不是很重要),并且接受strtotime兼容的字符串作为输入(初始化内部日期),然后允许调整日期/时间,也使用strtotime-compatible字符串.
我知道它可以通过几个条件和基本数学来完成,但与此相比,这是非常混乱的,例如(如果它正常工作,当然):
echo tz::date('last month')->format('Y-d')
Run Code Online (Sandbox Code Playgroud)
所以,我只需要一个月和一年,以一种strtotime兼容的方式.
回答(谢谢,@ ndagirl):
// Today is 2011-03-30
echo date('Y-m-d', strtotime('first day of last month')); // Output: 2011-02-01
Run Code Online (Sandbox Code Playgroud) 我有一个简单的变量,今天增加一个月:
$endOfCycle = date("Y-m", strtotime("+1 month"));
Run Code Online (Sandbox Code Playgroud)
今天是2013年1月,所以我希望能回到2013-02,但我现在得到了2013-03.我无法弄清楚为什么它会跳到三月.