2013-04-14 1 views
0
$timeFromMysql = strtotime($createdtime); 
$currenTime = SPRequest::now();; 

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

Мне просто интересно, правильно ли я делаю это правильно. кажется, что действие сделано без проверки времени.Неполадка расчета разницы во времени при выполнении действий

+0

Является ли «currenTime» опечаткой? –

+0

@JoeFrambach Это то же самое в обоих местах;) – Jon

ответ

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 
} 

Подсчитайте свои круглые скобки и убедитесь, что они совпадают.

0

Вы не проверяете, равно ли равны - вы присваиваете значение $ diff, что всегда верно. Итак:

$diff == 
+0

Нет. Я думаю, что OP хочет сохранить временную разницу в переменной '$ diff', а затем проверить ее на' 30 * 24 * 60 * 60'. –

+0

Да, правильно, видел это и в другом решении;) – djot

+0

да, это то, что я хочу. В базе данных есть дата (& createdtime). Это было время, когда api установила информацию в базу данных. Через месяц я хочу обновить не раньше. Поэтому необходимо проверить разницу между текущим и временем базы данных. Но где я пропустил какой-то код? – Simpel

0

Я получаю следующее сообщение об ошибке:

PHP Примечания: Объект класса DateInterval не может быть преобразован в целом блабли в правиле 128

это код (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); 
} 

echos отлично работает.