在执行操作时无法计算PHP中的时差

时间:2013-04-14 14:57:15

标签: php time datediff

$timeFromMysql = strtotime($createdtime);
$currenTime = SPRequest::now();;

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

我只是想知道我是否正确行事。似乎行动是在没有时间检查的情况下完成的。

3 个答案:

答案 0 :(得分: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
}

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

答案 1 :(得分:0)

你没有检查是否等于 - 你将值赋给$ diff,这总是正确的。所以:

$diff ==

答案 2 :(得分:0)

我收到以下错误:

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);
}

回声很好。