Php 寻找2个时间戳的相等间隔

Php 寻找2个时间戳的相等间隔,php,function,datetime,math,logic,Php,Function,Datetime,Math,Logic,我有两个时间戳,并试图将持续时间分组为相同的持续时间间隔 2013-08-02 00:00:12 to 2013-08-02 00:58:50 例如,15秒的间隔应为我提供以下信息: 2013-08-02 00:00:00 2013-08-02 00:00:15 2013-08-02 00:00:30 2013-08-02 00:00:45 2013-08-02 00:01:00 ....// and so on... 2013-08-02 00:58:45 目前我正在使用我

我有两个时间戳,并试图将持续时间分组为相同的持续时间间隔

2013-08-02 00:00:12   to    2013-08-02 00:58:50
例如,15秒的间隔应为我提供以下信息:

2013-08-02 00:00:00
2013-08-02 00:00:15
2013-08-02 00:00:30
2013-08-02 00:00:45
2013-08-02 00:01:00   
....// and so on...
2013-08-02 00:58:45
目前我正在使用我创建的这个函数,它工作得非常好,但速度非常慢:

function time_active_calculator($from_date, $to_date, $interval) {

$unix_from_date = strtotime($from_date);
$unix_to_date = strtotime($to_date);

$start_time_minute = floor($unix_from_date / 60) * 60;
$end_time_minute = ceil($unix_to_date / 60) * 60;

$valid_times = array();

while ($start_time_minute <= $end_time_minute) {

    if (($start_time_minute <= $unix_to_date)) {

        if ($start_time_minute + $interval > $unix_from_date) {
            $valid_times[] = $start_time_minute;
        }
    }
    $start_time_minute = $start_time_minute + $interval;
}
return $valid_times; }
然后在其上使用范围函数。

您可以这样尝试-

function time_active_calculator($from_date, $to_date, $interval) {
$dateFrom = new DateTime($from_date);
$dateTo = new DateTime($to_date);
    while ($dateFrom <= $dateTo) {
        $dateFrom->add(new DateInterval('PT$intervalS'));        
        $valid_times[] = $dateFrom->format('Y-m-d H:i:s');
        $dateFrom = new DateTime($dateFrom->format('Y-m-d H:i:s'));
    }
    return $valid_times; 
}
函数时间\u活动\u计算器($from\u date,$to\u date,$interval){
$DATEFORM=新日期时间($from_date);
$dateTo=新日期时间($to_日期);
而($dateFrom add(新的日期间隔($PT interval));
$valid_times[]=$dateFrom->format('Y-m-dh:i:s');
$dateFrom=newdatetime($dateFrom->format('Y-m-dh:i:s');
}
返回$valid\u次;
}

您需要更改
DateInterval()
参数,根据您的要求。如果您想增加秒数,而不是应该的
PT$interval
,如果分钟数小于
PT$intervalM
,则无论时间戳是什么,这只会增加15秒。我希望这样,一分钟被分为4秒,每分钟15秒,任何时间戳都应该给出上一个间隔,例如:00:00:1700:00返回:15@JCrow字体请看我的帖子。
function time_active_calculator($from_date, $to_date, $interval) {
$dateFrom = new DateTime($from_date);
$dateTo = new DateTime($to_date);
    while ($dateFrom <= $dateTo) {
        $dateFrom->add(new DateInterval('PT$intervalS'));        
        $valid_times[] = $dateFrom->format('Y-m-d H:i:s');
        $dateFrom = new DateTime($dateFrom->format('Y-m-d H:i:s'));
    }
    return $valid_times; 
}