文章摘要
该文章介绍了名为`gettimestamp`的PHP函数,该函数通过switch-case结构来定义不同的时间范围,并返回一个结构化的数组,包含时间范围的开始和结束时间戳。函数支持多种时间范围类型,包括:
- `today`:定义当天的时间范围
- `yesterday`:定义昨天的时间范围
- `beforyesterday`:定义前天的时间范围
- `beforweek`:定义本周的时间范围
- `nowmonth`:定义当月的时间范围
- `permonth`:定义上个月的时间范围
- `preweek`:定义上周的时间范围
- `nowweek`:定义本周的时间范围
- `preday`:定义比指定日期早30天的时间范围
- `nextday`:定义比指定日期晚30天的时间范围
- `preyear`:定义去年的时间范围
- `nowyear`:定义今年的时间范围
- `quarter`:定义所属季度的时间范围
函数通过`strtotime`和`date`方法计算时间戳,并支持多种时间表达方式。每个case的处理逻辑都简洁明了,适用于不同场景的时间范围计算需求。
function gettimestamp($targetTime){
switch ($targetTime){
case ‘today’://今天
$timeamp[‘start’]=strtotime(date(‘Y-m-d’));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’,strtotime(‘+1 day’)));
break;
case ‘yesterday’://昨天
$timeamp[‘start’]=strtotime(date(‘Y-m-d’,strtotime(‘-1 day’)));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’));
break;
case ‘beforyesterday’://前天
$timeamp[‘start’]=strtotime(date(‘Y-m-d’,strtotime(‘-2 day’)));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’,strtotime(‘-1 day’)));
break;
case ‘beforweek’://本周
$timeamp[‘start’]=strtotime(date(“Y-m-d H:i:s”,mktime(0, 0 , 0,date(“m”),date(“d”)-date(“w”)+1,date(“Y”))));
$timeamp[‘over’]=strtotime(date(“Y-m-d H:i:s”,mktime(23,59,59,date(“m”),date(“d”)-date(“w”)+7,date(“Y”))));
break;
case ‘nowmonth’://本月
$timeamp[‘start’]=strtotime(date(‘Y-m-01’));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’,strtotime(‘+1 day’)));
break;
case ‘permonth’://上月
$timeamp[‘start’]=strtotime(date(‘Y-m-01’,strtotime(‘-1 month’)));
$timeamp[‘over’]=strtotime(date(‘Y-m-01’));
break;
case ‘preweek’://上周 注意我们是从周一开始算
$timeamp[‘start’]=strtotime(date(‘Y-m-d’,strtotime(‘-2 week Monday’)));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’,strtotime(‘-1 week Monday +1 day’)));
break;
case ‘nowweek’://本周
$timeamp[‘start’]=strtotime(date(‘Y-m-d’,strtotime(‘-1 week Monday’)));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’,strtotime(‘+1 day’)));
break;
case ‘preday’://30
$timeamp[‘start’]=strtotime(date(‘Y-m-d’),strtotime($param.’ day’));
$timeamp[‘end’]=strtotime(date(‘Y-m-d’));
break;
case ‘nextday’://30
$timeamp[‘start’]=strtotime(date(‘Y-m-d’));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’),strtotime($param.’ day’));
break;
case ‘preyear’://去年
$timeamp[‘start’]=strtotime(date(‘Y-01-01’,strtotime(‘-1 year’)));
$timeamp[‘over’]=strtotime(date(‘Y-12-31’,strtotime(‘-1 year’)));
break;
case ‘nowyear’://今年
$timeamp[‘start’]=strtotime(date(‘Y-01-01’));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’,strtotime(‘+1 day’)));
break;
case ‘quarter’://季度
$quarter=ceil((date(‘m’))/3);
$timeamp[‘start’]=mktime(0, 0, 0,$quarter*3-2,1,date(‘Y’));
$timeamp[‘over’]=mktime(0, 0, 0,$quarter*3+1,1,date(‘Y’));
break;
default:
$timeamp[‘start’]=strtotime(date(‘Y-m-d’));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’,strtotime(‘+1 day’)));
break;
}
return $timeamp;
}
switch ($targetTime){
case ‘today’://今天
$timeamp[‘start’]=strtotime(date(‘Y-m-d’));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’,strtotime(‘+1 day’)));
break;
case ‘yesterday’://昨天
$timeamp[‘start’]=strtotime(date(‘Y-m-d’,strtotime(‘-1 day’)));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’));
break;
case ‘beforyesterday’://前天
$timeamp[‘start’]=strtotime(date(‘Y-m-d’,strtotime(‘-2 day’)));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’,strtotime(‘-1 day’)));
break;
case ‘beforweek’://本周
$timeamp[‘start’]=strtotime(date(“Y-m-d H:i:s”,mktime(0, 0 , 0,date(“m”),date(“d”)-date(“w”)+1,date(“Y”))));
$timeamp[‘over’]=strtotime(date(“Y-m-d H:i:s”,mktime(23,59,59,date(“m”),date(“d”)-date(“w”)+7,date(“Y”))));
break;
case ‘nowmonth’://本月
$timeamp[‘start’]=strtotime(date(‘Y-m-01’));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’,strtotime(‘+1 day’)));
break;
case ‘permonth’://上月
$timeamp[‘start’]=strtotime(date(‘Y-m-01’,strtotime(‘-1 month’)));
$timeamp[‘over’]=strtotime(date(‘Y-m-01’));
break;
case ‘preweek’://上周 注意我们是从周一开始算
$timeamp[‘start’]=strtotime(date(‘Y-m-d’,strtotime(‘-2 week Monday’)));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’,strtotime(‘-1 week Monday +1 day’)));
break;
case ‘nowweek’://本周
$timeamp[‘start’]=strtotime(date(‘Y-m-d’,strtotime(‘-1 week Monday’)));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’,strtotime(‘+1 day’)));
break;
case ‘preday’://30
$timeamp[‘start’]=strtotime(date(‘Y-m-d’),strtotime($param.’ day’));
$timeamp[‘end’]=strtotime(date(‘Y-m-d’));
break;
case ‘nextday’://30
$timeamp[‘start’]=strtotime(date(‘Y-m-d’));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’),strtotime($param.’ day’));
break;
case ‘preyear’://去年
$timeamp[‘start’]=strtotime(date(‘Y-01-01’,strtotime(‘-1 year’)));
$timeamp[‘over’]=strtotime(date(‘Y-12-31’,strtotime(‘-1 year’)));
break;
case ‘nowyear’://今年
$timeamp[‘start’]=strtotime(date(‘Y-01-01’));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’,strtotime(‘+1 day’)));
break;
case ‘quarter’://季度
$quarter=ceil((date(‘m’))/3);
$timeamp[‘start’]=mktime(0, 0, 0,$quarter*3-2,1,date(‘Y’));
$timeamp[‘over’]=mktime(0, 0, 0,$quarter*3+1,1,date(‘Y’));
break;
default:
$timeamp[‘start’]=strtotime(date(‘Y-m-d’));
$timeamp[‘over’]=strtotime(date(‘Y-m-d’,strtotime(‘+1 day’)));
break;
}
return $timeamp;
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。