PHP DateTime返回未预期的结果

时间:2016-10-11 14:25:19

标签: php date datetime compare

我正试图在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?

谢谢=)

1 个答案:

答案 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"