2017-03-06 39 views
0

我使用一个代码来寻找,因为在新的一年有多少天过去了(1月1日)。 我用这个代码:PHP DATEDIFF日发出

$newyear = new DateTime("2017-01-01"); // January 1, 2017. 
$today = new DateTime(); // March 6, 2017. 
$difference = $newyear->diff($today); 

现在,如果我用这个代码,它显示的天正确数量,

echo $difference->format("%a days"); // 64 days 

但是当我使用不同的格式,它出错。

echo $difference->format("%m months %d days"); // 2months 2 days. 

我认为这是由于PHP计算2月为31天长,所以技术上它是31 + 31 + 2天。根据闰年的情况,我希望它将2月计为28或29天。我想在这里必须有一些与php.ini相关的东西。什么和在哪里改变或有什么黑客?

+0

上的东西应该'格式()'做'如果“%m个月%d天”'中给出。这'1个月28天1个月29天2天'??你必须手工计算并自己格式化:-) – JustOnUnderMillions

+0

它工作正常: - https://eval.in/748856 –

+0

@Anant我也有'2个月2天',似乎有一些配置到位。忽略我的第一条评论。 :-) – JustOnUnderMillions

回答

0

要用PHP错误地报告2个日期之间的差异来调试此问题,我们首先必须检查几件事情。

我看到几个人正在获得混合的结果,来调试这种尝试找出你有什么版本的timezonedb的

<?php 
echo timezone_version_get(); 
?> 

http://php.net/manual/en/function.timezone-version-get.php

的PECL timezonedb网站可以在https://pecl.php.net/package/timezonedb

被发现

检查,看看你有最先进的最新版本。从另一条路

+1

这解决了我的问题。谢谢。这正是我所期待的。我的upvote没有显示,因为低信誉点。 –

+1

@doing_something_wonderful你可以标记为答案。 – JustOnUnderMillions

+0

请注册这个人 –