当我在PHP日期计算中遇到问题时,我感到很惊讶。
this.http.get('https://api.skypicker.com/flights?' + bodyStringSerialized)
但在
serialize(obj, prefix) {
var str = [], p;
for(p in obj) {
if (obj.hasOwnProperty(p)) {
var k = prefix ? prefix + "[" + p + "]" : p, v = obj[p];
str.push((v !== null && typeof v === "object") ?
this.serialize(v, k) :
k + "=" + v);
}
}
return str.join("&");
}
请帮我解决这个问题。
答案 0 :(得分:0)
您可以查看:http://php.net/manual/en/function.strtotime.php(解释和评论)
注意:
不建议使用此函数进行数学运算。最好在PHP 5.3及更高版本中使用DateTime :: add()和DateTime :: sub(),或在PHP 5.2中使用DateTime :: modify()。
答案 1 :(得分:0)
为什么不利用DateTime相对格式并简单地使用:
$date = new DateTime('first day of last month');
echo $date->format('Y-m-d');
答案 2 :(得分:0)
在你的情况下,你计算二月份。 2月份只有28天吧?
正如几篇博客中所述,strtotime()在下个月不存在的日子里解决了“-1个月”(“上个月”)问题,与其他实现(如MySQL)不同。
<?php
echo date( "Y-m-d", strtotime( "2017-01-31 -1 month" ) ); // PHP: 2016-12-31
echo date( "Y-m-d", strtotime( "2017-01-31 -2 month" ) ); // PHP: 2016-12-01
?>
如果你按照这样计算,你就得到了正确的答案:
$add = '- 28 days';
echo date('Y-m-01', strtotime($add))."<br/>";
$add = '-1 month';
echo date('Y-m-01', strtotime($add))."<br/>";