Php 淡季时段计算

Php 淡季时段计算,php,mysql,Php,Mysql,我不知道在我的问题中,“淡季”或“死亡”是否是正确的定义。不管怎样,解释如下: 在我的数组中有$period['from']和$period['to'],我需要计算2013年的“淡季或淡季”时段 输入周期示例: From To 2013-04-01 2013-06-01 2013-07-15 2013-07-20 2013-09-01 2013-10-31 死区时间将为(输出): 我完全被这件事缠住了。 任何帮助都将不胜感激 Karls试试这

我不知道在我的问题中,“淡季”或“死亡”是否是正确的定义。不管怎样,解释如下:

在我的数组中有
$period['from']
$period['to']
,我需要计算2013年的“淡季或淡季”时段

输入周期示例:

From            To
2013-04-01      2013-06-01
2013-07-15      2013-07-20
2013-09-01      2013-10-31
死区时间将为(输出):

我完全被这件事缠住了。 任何帮助都将不胜感激

Karls

试试这个:

function dateDiff(array $dates, $startAt = null, $endAt = null) {
    if ($startAt === null) {
        $startAt = date("Y-01-01");
        $start = strtotime($startAt) - 86400;
    } else {
        $start = strtotime($startAt);
    }        

    if ($endAt === null) {
      $endAt = date("Y-12-31");
    }

    $result = array();

    foreach ($dates as $row) {
        $to = strtotime($row['from']);      
        $result[] = array('from' => date('Y-m-d', $start + 86400), 'to' => date('Y-m-d', $to - 86400));
        $start = strtotime($row['to']);;
    }
    $result[] = array('from' => date('Y-m-d', $start + 86400), 'to' => date('Y-m-d', strtotime($endAt)));

    return $result;
}



$dates = array(
    array('from' => '2013-04-01', 'to' => '2013-06-01'),
    array('from' => '2013-07-15', 'to' => '2013-07-20'),
    array('from' => '2013-09-01', 'to' => '2013-10-31'),
);

print_r(dateDiff($dates));
这将产生:

Array ( 
    [0] => Array ( [from] => 2013-01-01 [to] => 2013-03-31 ) 
    [1] => Array ( [from] => 2013-06-02 [to] => 2013-07-14 ) 
    [2] => Array ( [from] => 2013-07-21 [to] => 2013-08-31 ) 
    [3] => Array ( [from] => 2013-11-01 [to] => 2013-12-31 ) 
)

您已经标记了这个MySQL。这是否意味着您希望在SQL中或仅在PHP中执行此操作?输入周期是否重叠?数据在MySQL中,但我在PHP中工作。在PHP中更好。没有重叠的输入周期。到目前为止你有什么?它似乎没有那么复杂…Jakub,带输入周:2013-01-01-2013-03-31和2013-04-01-2013-08-31和2013-09-01-2013-12-31我要下班时间:2013-01-01-2012-12-31和2013-04-01-2013-03-30和2013-09-01-2013-08-31和2014-01-01-01-2013-12-31你能建议解决这个问题吗?
Array ( 
    [0] => Array ( [from] => 2013-01-01 [to] => 2013-03-31 ) 
    [1] => Array ( [from] => 2013-06-02 [to] => 2013-07-14 ) 
    [2] => Array ( [from] => 2013-07-21 [to] => 2013-08-31 ) 
    [3] => Array ( [from] => 2013-11-01 [to] => 2013-12-31 ) 
)