我正试图在PHP的日期上获得-2个月。 大多数情况下,结果都很好,但是对于一个日期,结果是错误的。
$d = 1409436000; // 31-8-2014
$d1 = new DateTime(date("d-m-Y", $d));
$d1->modify("-2 month");
echo $d1->format("d-m-Y");
// expected : 30-06-2014
// got : 01-07-2014
我目前的PHP版本是:5.6.23-0 + deb8u1 我没有对TimeZone进行任何配置。
所以:为什么我得到这个结果?这是因为八月和七月有31天?或者phpversion上的当前错误? TimeZone?
谢谢=)
答案 0 :(得分:0)
根据评论和链接,我这样解决了我的问题:
$d = 1409436000; // 31-8-2014
$d1 = strtotime("first day of this month", $d);
$d1 = strtotime("-2 month", $d1);
$d1 = strtotime("last day of this month", $d1);
echo date("d-m-Y", $d1);
问题是: 我试着" 31/08/2014 -2月"女巫等于" 31/06 / 2014"。
31/06/2014 =>这个日期不存在,PHP会将其转换为" 01/07 / 2014"