【问题标题】:Trouble calculating time difference in PHP when doing action执行操作时无法计算 PHP 中的时间差
【发布时间】:2013-04-14 14:57:15
【问题描述】:
$timeFromMysql = strtotime($createdtime);
$currenTime = SPRequest::now();;

if ($diff = abs( strtotime( $timeFromMysql ) - strtotime( $currenTime )  > 30*24*60*60) {  
  ACTION
}

我只是想知道我这样做是否正确。看来动作是在没有时间检查的情况下完成的。

【问题讨论】:

  • currenTime 是错字吗?
  • @JoeFrambach 两个地方都一样;)

标签: php time datediff


【解决方案1】:

你的括号不匹配。

if ($diff = abs( strtotime( $timeFromMysql ) - strtotime( $currenTime ) )  > 30*24*60*60) {  
 //ACTION
}

进一步分解:

if (
  $diff = abs(
    strtotime( $timeFromMysql ) - strtotime( $currenTime )
  )  > 30*24*60*60)
{  
 //ACTION
}

计算括号并确保它们匹配。

【讨论】:

    【解决方案2】:

    您不检查是否相等 - 您将值分配给 $diff,这始终是正确的。所以:

    $diff ==
    

    【讨论】:

    • 不,我认为 OP 想将时间差异存储在变量 $diff 中,然后对照 30*24*60*60 进行检查。
    • 是的,这就是我想要的。在数据库中有一个日期(&createdtime)。这是 api 将信息设置到数据库中的时间。一个月后,我想尽快更新。所以应该检查当前时间和数据库时间之间的差异。但是我在哪里漏掉了一些代码?
    【解决方案3】:

    我收到以下错误:

    PHP 注意:DateInterval 类的对象在规则 128 中无法转换为 int blabla

    这是代码 (128):

    if ( $difference > 30*24*60*60) { 
    

    更多信息,这里有一个更大的代码:

    $timeFromMysql = strtotime($createdtime);
    $currenTime = SPRequest::now();
    
    function format_interval(DateInterval $interval) {
        $result = "";
        if ($interval->y) { $result .= $interval->format("%y years "); }
        if ($interval->m) { $result .= $interval->format("%m months "); }
        if ($interval->d) { $result .= $interval->format("%d days "); }
        if ($interval->h) { $result .= $interval->format("%h hours "); }
        if ($interval->i) { $result .= $interval->format("%i minutes "); }
        if ($interval->s) { $result .= $interval->format("%s seconds "); }
        return $result;
    }
    
    $first_date = new DateTime($createdtime);
    $second_date = new DateTime($currenTime);
    
    $difference = $first_date->diff($second_date);
    
    //echo format_interval($difference);
    //echo $createdtime;
    //echo $currenTime;
    
    if ( $difference > 30*24*60*60) { 
        // load the apicall
        $xml = simplexml_load_file($api);
    }
    

    回声工作正常。

    【讨论】:

      猜你喜欢
      • 2021-02-18
      • 1970-01-01
      • 2021-06-21
      • 2013-04-30
      • 2019-01-11
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      相关资源
      最近更新 更多