-4

我需要对日期进行一些操作。从 DB 脚本读取操作的日期和频率(例如 21 天),并应计算自实际日期以来的下一个操作时间。我已经尝试以某种方式做到这一点(我很难用英文写它,所以你可以在下面找到代码)。

    //$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); 

但它不起作用 - 计算中有错误,我不知道为什么。

4

2 回答 2

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.phphttp://es2.php.net/manual/en/datetime.add.phphttp://es2.php.net /manual/en/dateinterval.construct.php

于 2013-03-10T15:54:49.607 回答
1

strtotime比您使用它的功能强大得多。尝试这个:

$e = date("Y-m-d",strtotime($devices[$i]['date_on']." +".$devices[$i]['freq']."days"));
于 2013-03-10T15:53:07.360 回答