我正在尝试从当前接收年份的月份中减去一个月( 2019-03 )
echo $payroll['month'];
echo $newdate = date("Y-m", strtotime("-1 months",$payroll['month']));
但由于错误而出现
2019-03
遇到PHP错误严重性:通知
消息:遇到格式不正确的数值
我希望2019-03减去一个月,以便得到2019-02
答案 0 :(得分:3)
您可以尝试以下解决方案:
date('Y-m', strtotime($payroll['month'] . ' - 1 month'))
答案 1 :(得分:2)
尝试一下-
echo $newdate = date('Y-m', strtotime('-1 months', strtotime($payroll['month'])));
答案 2 :(得分:2)
这里有很多不错的答案。
请注意,这可以使用PHP的DateTime类来完成。
$date = new DateTime("2019-03-03");
$date->sub(new DateInterval('P1M')); // P -> Period 1 Month
echo $date->format("Y-m")
// Outputs: 2019-02
strtotime()的官方文档中的简短说明。
注意:不能将此功能用于数学运算 可取。最好在其中使用DateTime :: add()和DateTime :: sub() PHP 5.3和更高版本,或者PHP 5.2中的DateTime :: modify()。
答案 3 :(得分:0)
您可以再添加strtotime
以获得所需的输出
$payroll['month'] = "2019-03";
echo $payroll['month'];
echo $newdate = date("Y-m", strtotime("-1 months", strtotime($payroll['month'])));
另一种方法是:
date('Y-m', strtotime($payroll['month'] . '-1 months'))
这也将为您服务。
答案 4 :(得分:0)
当心...在一个yyyy-mm
字符串上简单地增加或减去一个月,在某些情况下可能会导致意外结果。
碰巧我在建造的网站上使用了这种格式(用于薪水和其他东西),并且在2月28日(IIRC)和其他极端情况下完成计算时,结果并不总是我所需要的(即,下个月或上个月)
更多代码,但是我的建议是:
$first_of_month = date('Y-m-01', strtotime($payroll['month']));
$newdate = date('Y-m', strtotime($first_of_month."-1 month"));
通过将初始值强制为一个月的第一天的完整Ymd日期(这一天与您无关,因为它仅用于计算),可以确保每次计算都正确< / p>