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

需求:根据两个时间算取出之间的所有月份

此处例子是使用 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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值