计算过去 12 个月的阶梯,格式为 Y-m [ 未指定版本 ]
/**
* 获取当前时间过去12个月的梯阶,含当月;
* @author 鬼一浪人
* @date 2019-09-02
* @param string $date 默认当前时间,可传入Y-m-d,或其他允许的日期格式
* $param string $timezone
* @return [type] [description]
*/
function getDateYmPeriod($date = 'now', $timezone = 'PRC')
{
$timezone = new DateTimeZone($timezone);
//以此作为基准
$date = new DateTime($date,$timezone);
$startDate = new DateTime($date->format('Y-m'), $timezone);
//28每个月都有,不会出现月末转月头的计算差异;若是为1,则有该问题
//若不想含当月,可将28设置成1,且下文的P11M改成P12M,如此即可;
$endDate = new DateTime($date->format('Y-m-28'), $timezone);
//在当前时间减去12个月,做为开始时间,起始月算第一个
$startDate->sub(new DateInterval('P11M'));
//格式化成月梯阶
$date_ranage = new DatePeriod($startDate, new DateInterval('P1M'), $endDate);
$return = [];
foreach ($date_ranage as $key => $date) {
$return[] = $date->format('Y-m');
}
return $return;
}
鬼一浪人 魔都
注册时间:2015-03-28
最后登录:2023-12-26
在线时长:57小时24分
最后登录:2023-12-26
在线时长:57小时24分
- 粉丝29
- 金钱3960
- 威望85
- 积分5380
共 2 条评论
牛逼了,写的代码我都看不懂了
function getPeriod($date="now", $num=12) { $time = strtotime($date); $return = []; for($i=0;$i<$num;$i++) { $return[] = date("Y-m", strtotime("-${i} month", $time)); } return $return; }