2016-10-11 25 views
0

我想在PHP的日期-2个月。 大多数情况下,结果是好的,但是对于一个日期,结果是错误的。PHP日期时间返回没有得到结果

$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 我没有做出任何时区配置。

所以:为什么我得到这个结果?这是因为8月份& 7月有31天?或者phpversion的当前错误?时区?

感谢=)

+1

为我工作。我得到了30-06-2014 –

+0

你可以试试:'$ d = 1409436000; // 31-8-2014 $ d1 = new DateTime(); $ d1-> setTimestamp($ d); $ d1->修改(“ - 2个月”); echo $ d1-> format(“d-m-Y”);' –

+0

我其实也得到了'01-07-2014'。我正在运行PHP 7. –

回答

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将其转换为“2014年1月7日”