由于公司的数据表是按月份命名存放的,有时候找一条数据不知道具体的日期,一个个找太慢,就写了个自定义的function,当时能解决了问题,但是现在看觉着不够完美,代码不够简洁,用笨方法实现的,希望对大家有用,如果能改动的更好,希望大家能在评论区指正。互相学习。
以下就是此函数的代码:
function DiffDate($date1, $date2) {
//首次进入将分割开始与结束日期。
$startDate = explode('-', $date1);
$endDate = explode('-', $date2);
$startYear = $startDate[0];
$endYear = $endDate[0];
$startMonth = $startDate[1];
$endMonth = $endDate[1];
$YmArr = [];
//同一年和跨年分开处理。
if($startYear != $endYear){
//找出跨年所有的月份
for ($year=$startYear; $year < $endYear; $year++) {
for ($month=$startMonth; $month <= 12; $month++) {
$lenth = strlen($month);
if($lenth != 2){
$month = '0'.$month;
}
$Ym = $year.$month;//拼接日期,根据自己需要的格式拼接。
$YmArr[] = $Ym;
}
$startMonth = 1; //跨年的时候重置月份
}
//找出本年到现在的所有月份
for ($nowMonth=1; $nowMonth <= $endMonth; $nowMonth++) {
$lenth = strlen($nowMonth);
if($lenth != 2){
$nowMonth = '0'.$nowMonth;
}
$nowYm = $endYear.$nowMonth;
$YmArr[] = $nowYm;
}
}else{
for ($nowMonth=$startMonth; $nowMonth <= $endMonth; $nowMonth++) {
$lenth = strlen($nowMonth);
if($lenth != 2){
$nowMonth = '0'.$nowMonth;
}
$nowYm = $endYear.$nowMonth;
$YmArr[] = $nowYm;
}
}
return $YmArr;
}
$arr = DiffDate('2017-04','2018-10');
输出结果:
希望能帮到正好需要此功能的朋友。