您的位置:首页 > 编程语言 > PHP开发

php 算取两个时间的所有月份

2015-12-13 10:08 597 查看
需求:根据两个时间算取出之间的所有月份

此处例子是使用 2014-12 2015-13 的来算取的

/**
 * 计算出两个日期之间的月份
 * @author 微云科技 ROVAST
 * @param  [type] $start_date [开始日期,如2014-03]
 * @param  [type] $end_date   [结束日期,如2015-12]
 * @param  string $explode    [年份和月份之间分隔符,此例为 - ]
 * @param  boolean $addOne    [算取完之后最后是否加一月,用于算取时间戳用]
 * @return [type]             [返回是两个月份之间所有月份字符串]
 */
function dateMonths($start_date,$end_date,$explode='-',$addOne=false){
    //判断两个时间是不是需要调换顺序
    $start_int = strtotime($start_date);
    $end_int = strtotime($end_date);
    if($start_int > $end_int){
        $tmp = $start_date;
        $start_date = $end_date;
        $end_date = $tmp;
    }

    //结束时间月份+1,如果是13则为新年的一月份
    $start_arr = explode($explode,$start_date);
    $start_year = intval($start_arr[0]);
    $start_month = intval($start_arr[1]);

    $end_arr = explode($explode,$end_date);
    $end_year = intval($end_arr[0]);
    $end_month = intval($end_arr[1]);

    $data = array();
    $data[] = $start_date;

    $tmp_month = $start_month;
    $tmp_year = $start_year;

    //如果起止不相等,一直循环
    while (!(($tmp_month == $end_month) && ($tmp_year == $end_year))) {
        $tmp_month ++;
        //超过十二月份,到新年的一月份
        if($tmp_month > 12){
            $tmp_month = 1;
            $tmp_year++;
        }
        $data[] = $tmp_year.$explode.str_pad($tmp_month,2,'0',STR_PAD_LEFT);
    }

    if($addOne == true){
        $tmp_month ++;
        //超过十二月份,到新年的一月份
        if($tmp_month > 12){
            $tmp_month = 1;
            $tmp_year++;
        }
        $data[] = $tmp_year.$explode.str_pad($tmp_month,2,'0',STR_PAD_LEFT);
    }

    return $data;
}


/**
* 计算出两个日期之间的月份区间
* @author 微云科技 ROVAST
* @param  [type] $start_date [开始日期,如2014-03]
* @param  [type] $end_date   [结束日期,如2015-12]
* @param  string $explode    [年份和月份之间分隔符,此例为 - ]
* @param  boolean $addOne    [算取完之后最后是否加一月,用于算取时间戳用]
* @return [type]             [返回是两个月份之间所有月份字符串]
*/
function dateMonthsSections($start_date,$end_date,$explode='-',$addOne=false){
$data = dateMonths($start_date,$end_date,$explode,$addOne);
$length = sizeof($data);

$res = array();
foreach ($data as $key => $value) {
if($key < ($length-1)){
$date1 = $value;
$date2 = $data[$key + 1];
$res[$key][0] = $date1;
$res[$key][1] = $date2;
}
}

return $res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: