2013-03-10 3 views
-4

Мне нужно сделать некоторые операции с датой. Из сценария БД читается дата и частота действий (например, 21 день) и вычисляется, когда будет действовать следующее действие с фактической даты. Я пытался сделать это в некотором роде (мне сложно писать его на английском языке, поэтому ниже вы можете найти код).Операции на дату PHP

//$unix_on - date from DB 
    //$devices[$i]['freq'] - frequency of actions 
    $unix_on=strtotime($devices[$i]['date_on']); 
    $unix_today=strtotime(date('Y-m-d')); 
    $actions=($unix_today-$unix_on)/(86400*$devices[$i]['freq']); 
    $b=explode(".", $actions); 
    $a='0'.'.'.$b['1']; 
    $f=$a*$devices[$i]['freq']; 
    $d=$unix_today+($f*86400); 
    $e=date("Y-m-d",$d); 

Но это не работает - ошибки в расчетах, и я не знаю почему.

+0

Пожалуйста, используйте функцию поиска. [Как добавить время] (http://stackoverflow.com/search?q=add+time+php) было задано и ответилось бесчисленное количество раз до – Gordon

ответ

1

strtotime является намного более мощным, чем вы его используете. Попробуйте это:

$e = date("Y-m-d",strtotime($devices[$i]['date_on']." +".$devices[$i]['freq']."days")); 
+1

. Это именно те ответы, на которые вы получили критику в своей номинации – Gordon

1
$dateOn = new DateTime($devices[$i]['date_on']); 
$frecuency = new DateInterval('P' . $devices[$i]['freq'] . 'D'); // Period of x Days 

$dateOn->add($frequency); 

$e = $dateOn->format('Y-m-d'); 

См http://es2.php.net/manual/en/datetime.construct.php, http://es2.php.net/manual/en/datetime.add.php и http://es2.php.net/manual/en/dateinterval.construct.php

+0

Спасибо много для вашей помощи. Код работает, но только для первого действия - он не показывает следующую дату с фактической даты ... – kacper

 Смежные вопросы

  • Нет связанных вопросов^_^