Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用DateTime类计算日期差异时出错_Php_Datetime_Intervals - Fatal编程技术网

Php 使用DateTime类计算日期差异时出错

Php 使用DateTime类计算日期差异时出错,php,datetime,intervals,Php,Datetime,Intervals,我试图使用类DateTime(php>=5.3)来计算与2 date的差异 手册中的例子简单明了,我尝试过这个例子,效果很好。 但如果更改开始和结束日期,则会出现问题: $this->start_date = '2011-03-01'; $this->end_date = '2011-03-31'; var_dump($this->start_date, $this->end_date); $dateti

我试图使用类DateTime(php>=5.3)来计算与2 date的差异

手册中的例子简单明了,我尝试过这个例子,效果很好。 但如果更改开始和结束日期,则会出现问题:

        $this->start_date = '2011-03-01';
        $this->end_date = '2011-03-31';

        var_dump($this->start_date, $this->end_date);

        $datetime1 = new DateTime($this->start_date);
        $datetime2 = new DateTime($this->end_date);

        $interval = $datetime2->diff($datetime1);

        echo $interval->format('%a total days')."\n";
        echo $interval->format('%m month, %d days');
输出为:

30 total days     //ok
1 month, 2 days   //no! i think it should be 0 month, 30 days

3月份的情况不太好!:)

二月不是有28天吗?出于某种原因,它可能会选择2月份作为“月份”单位。该方法的PHP文档似乎表明这种情况很容易发生。说“x个月”并没有多大用处,因为一个月不是一个固定的单位,它可以是28天、29天、30天或31天

从下面摘录

DateInterval::format()方法不支持 不重新计算中的结转点 时间字符串或日期段。 这是意料之中的,因为事实并非如此 可能会溢出值,如“32 “天”,可解释为 从“1个月零4天”到 “一个月零一天”


我的电脑显示总共有6015天,
1个月,2天
。有趣的…:D@Czechnology也许这是一个28天的三月!:D我没有试过其他月份,只有Jan,它工作得很好,就像手动示例。我做了一些测试,将日期设置为其他月份,在我看来,某处似乎有一个bug。3月被认为是28天,4月被认为是31天。因为一个月不是一个固定的单位,所以它不需要为给定的情况修正计算。不管怎么说,我是这么看的。我试过从2011-01-01到2011-01-31的1月份,结果是0个月,30天……我并不是说它一定会假设一个月是28天(尽管在主要问题的例子中看起来是这样的)。。。我想说的是,他们在文件中承认这种转换是不准确的。在我看来,最好避免。谢谢你的帮助!我想要间隔的天数,幸运的是它工作得很好(格式(%a))…我不明白为什么Jan工作得很好,而其他的不行…只是出于好奇!)我也不知道,但是如果没有它的源代码,我们永远都不可能知道。如果你包括一月和二月,它会说什么。。。一个月30天,两个月59天。。。那么,如果你将2个月和1天与2个月和1天进行比较,它们是否应该不相等,因为月份的长度不同?有点雷区真的。。。我想,只要去几天就可以避免,干得好:)