前几天
function prevDay($num=0,$type='Day',$day='')
{
$day = $day==''?date('Y-m-d'):$day;
switch($type)
{
case 'Second':
return date("Y-m-d 00:00:00",strtotime($day."-$num day"));
break;
case 'Hour':
return date("Y-m-d H:i:s",strtotime($day."-$num day"));
break;
case 'Day':
return date("Y-m-d",strtotime($day."-$num day"));
break;
case 'DayLast':
return date("Y-m-d 23:59:59",strtotime($day."-$num day"));
break;
}
}
后几天
function nextDay($num=0,$type='Day',$day='')
{
$day = $day==''?date('Y-m-d'):$day;
switch($type)
{
case 'Second':
return date("Y-m-d 23:59:59",strtotime($day."+$num day"));
break;
case 'Hour':
return date("Y-m-d H:i:s",strtotime($day."+$num day"));
break;
case 'Day':
return date("Y-m-d",strtotime($day."+$num day"));
break;
}
}
传入月份第一天
/*
*
* $month = 2019-06
* */
function monthFirstDay($month='',$type='Second')
{
switch($type)
{
case 'Second':
return date('Y-m-01 00:00:00',strtotime($month));
break;
case 'Day':
return date('Y-m-01',strtotime($month));
break;
}
}
传入月份最后一天
/*
*
* $month = 2019-06
* */
function monthLastDay($month='',$type='Second')
{
switch($type)
{
case 'Second':
return date('Y-m-d 23:59:59', strtotime("$month +1 month -1 day"));
break;
case 'Day':
return date('Y-m-d', strtotime("$month +1 month -1 day"));
break;
}
}
获取传入开始日期和结束日期之间的所有日期
/**
*
* @param string $start 开始时间 2019-01-01
* @param string $end 结束时间 2019-06-10
* @param string $sort 排序方式 asc:正序,desc:倒序
*/
function getDays($start='', $end='', $sort='asc')
{
$result=[];
$startdate = date('Y-m-d 00:00:00',strtotime($start));
$enddate = date('Y-m-d 23:59:59',strtotime($end));
$stimestamp = strtotime($startdate);
$etimestamp = strtotime($enddate);
if($etimestamp<$stimestamp) return [];
// 计算日期段内有多少天
$days = (int)ceil(($etimestamp-$stimestamp)/86400);
// 保存每天日期
$date = array();
for($i=0; $i<$days; $i++){
$date[] = date('Y-m-d', $stimestamp+(86400*$i));
}
if($sort = 'desc')
{
$date = array_reverse($date);
}
$data = [
'dates' => $date,
'days' => $days,
];
return $data;
}