首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP DateInterval可以和DateTime相比吗?

PHP DateInterval可以和DateTime相比吗?
EN

Stack Overflow用户
提问于 2012-03-04 00:50:26
回答 3查看 18.9K关注 0票数 31

我发现可以将PHP中的DateTime对象与另一个对象进行比较,因为">“和"<”运算符是重载的。

和DateInterval是一样的吗?

当我试图回答这个问题时,我发现了一些奇怪的事情:

代码语言:javascript
复制
<?php 

$today = new DateTime();
$release  = new DateTime('14-02-2012');
$building_time = new DateInterval('P15D');
var_dump($today->diff($release));
var_dump($building_time);
var_dump($today->diff($release)>$building_time);
var_dump($today->diff($release)<$building_time);
if($today->diff($release) < $building_time){
    echo 'oK';
}else{
    echo 'Just a test';
}

它总是与“只是一个测试”相呼应。var_dump输出为:

代码语言:javascript
复制
object(DateInterval)#4 (8) {
  ["y"]=>
  int(0)
  ["m"]=>
  int(0)
  ["d"]=>
  int(18)
  ["h"]=>
  int(16)
  ["i"]=>
  int(49)
  ["s"]=>
  int(19)
  ["invert"]=>
  int(1)
  ["days"]=>
  int(18)
}
object(DateInterval)#3 (8) {
  ["y"]=>
  int(0)
  ["m"]=>
  int(0)
  ["d"]=>
  int(15)
  ["h"]=>
  int(0)
  ["i"]=>
  int(0)
  ["s"]=>
  int(0)
  ["invert"]=>
  int(0)
  ["days"]=>
  bool(false)
}
bool(false)
bool(true)

当我尝试使用DateTime "01-03-2012“时,一切都正常。

EN

回答 3

Stack Overflow用户

发布于 2012-03-04 01:05:02

$aujourdhui是从哪里来的?当然,它在语言上和$today是一样的,但是PHP不知道这一点!更改代码以使用$today将打印"oK"

如果没有定义,如果你的$aujourdhui->diff($release)解释器不会因为错误而中止(我的解释器会),那么它的计算结果就会是0

票数 -1
EN

Stack Overflow用户

发布于 2019-04-04 13:05:15

如果您使用的时间间隔不超过一个月,则很容易将2个间隔转换为秒并进行比较。$dateInterval->format("%s")只返回秒组件,所以我最终这样做:

代码语言:javascript
复制
function intervalToSeconds($dateInterval) {
        $s = (
            ($dateInterval->format("%d")*24*60*60) + 
            ($dateInterval->format("%h")*60*60) + 
            ($dateInterval->format("%i")*60) + 
            $dateInterval->format("%s")
        );
        return $s;
    }
票数 -1
EN

Stack Overflow用户

发布于 2012-08-08 05:17:02

我使用了以下比较DateIntervals的解决方法:

代码语言:javascript
复制
version_compare(join('.', (array) $dateIntervalA), join('.', (array) $dateIntervalB));
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9547855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档