您的位置:首页 > 编程语言 > PHP开发

php实现周和月起止时间计算方法

2017-12-05 00:53 621 查看

php实现周和月起止时间计算方法

当前周的起止时间计算

public function getWeekend(){
$date=date("Y-m-d");  //当前日期
$first=1; //$first =1 表示每周星期一为开始日期 0表示每周日为开始日期
$w=date('w',strtotime($date));  //获取当前周的第几天 周日是0周一到周六是1-6
$now_start=date('Y-m-d',strtotime("$date -".($w==0 ? 6 : $w - $first).' days')); //获取本周开始日期,如果$w是0,则表示周日,减去6天
$now_end=date('Y-m-d',strtotime("$now_start +6 days"));  //本周结束日期
$week[]=array($now_start,$now_end);
return $week;
}




当前月的起止时间计算

public function getMonth(){
$date = date("Y-m-d");
$start_date = date('Y-m-d', mktime(00, 00, 00, date('m', strtotime($date)), 01));
$end_date = date('Y-m-d', mktime(23, 59, 59, date('m', strtotime($date))+1, 00));
$month[]=array($start_date,$end_date);
return $month;
}




当前周往后的指定周数的起止时间

public function getWeekends(){
header('Content-type: text/html; charset=utf-8');
$date=date("Y-m-d");  //当前日期
$first=1; //$first =1 表示每周星期一为开始日期 0表示每周日为开始日期
$w=date('w',strtotime($date));  //获取当前周的第几天 周日是0周一到周六是1-6
$now_start=date('Y-m-d',strtotime("$date -".($w==0 ? 6 : $w - $first).' days')); //获取本周开始日期,如果$w是0,则表示周日,减去6天
$now_end=date('Y-m-d',strtotime("$now_start +6 days"));  //本周结束日期

$weekEndCnt=1;
$weekStCnt=7;

echo '第0开始日期:'.$now_start.'<br />';
echo '第0结束日期:'.$now_end.'<br />';
echo "<br />";

for($i=1;$i<10;$i++){
$last_start=date('Y-m-d',strtotime("$now_end + ".$weekEndCnt." days"));//开始日期
$last_end=date('Y-m-d',strtotime("$now_end + ".$weekStCnt." days")); //结束日期
echo '第'.$i.'开始日期:'.$last_start.'<br />';
echo '第'.$i.'结束日期:',$last_end,'<br />';
$weekStCnt+=7;
$weekEndCnt+=7;
echo "<br />";
}
}




指定月的每周的起止日期

public function getWeekendsByMonths(){
$current_year="2017";//指定日期的年份
$current_month="12";//指定日期的月份
//该月第一天
$firstday = strtotime($current_year.'-'.$current_month.'-01');
//该月的第一周有几天
$firstweekday = (7 - date('N',$firstday) +1);
//计算该月第一个周一的时间
$starttime = $firstday-3600*24*(7-$firstweekday);
//该月的最后一天
$lastday = strtotime($current_year.'-'.$current_month.'-01'." +1 month -1 day");
//该月的最后一周有几天
$lastweekday = date('N',$lastday);
//该月的最后一个周末的时间
$endtime = $lastday-3600*24*($lastweekday%7);
$step = 3600*24*7;//步长值
$week_arr = array();
for ($i=$starttime; $i<$endtime; $i= $i+3600*24*7){
$week_arr[] = array('Start'=>date('Y-m-d',$i),"End"=>date('Y-m-d',$i+3600*24*6));
}
var_dump($week_arr);

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php