编程技巧:PHP中如何取得指定年份第几周的具体日期范围?

    技术2022-05-19  19

    PHP中如何取得指定年份第几周的具体日期范围?是否有现成的函数?

     

    比如我现在想要2010年第10周对应的具体的日期范围。

     

    -------------------------------------------------

    下面我用自己写的函数实现了取这个日期范围的功能这里假设第1周指的是每年第1个完整的周):

     

    /* 功能:获取指定年周对应的日期   参数1:年号,字符型或数值型 (例:2011)   参数2:周号,字符型或数值型 (例:4)   返回:时间戳型日期*/function getWeekNoToFirstDay($sYear,$sWeekNo){ $iFirstWeekDay = date('w',strtotime($sYear.'-01-01')); if($iFirstWeekDay != 1){//指定年的1月1号不是星期一  if($iFirstWeekDay === 0){//星期天   $iFirstWeekDay = 7;  }  $iAdjustDay = (8 - $iFirstWeekDay)+($sWeekNo-1)*7;  $dateFirstFullWeekBeginDate = strtotime("+{$iAdjustDay} day",strtotime($sYear.'-01-01')); }else{  $iAdjustDay = ($sWeekNo-1)*7;  $dateFirstFullWeekBeginDate = strtotime("+{$iAdjustDay} day",strtotime($sYear.'-01-01')); } return $dateFirstFullWeekBeginDate;}

    /* 功能:获取指定年周对应的日期范围文本   参数1:年号,字符型或数值型 (例:2011)   参数2:周号,字符型或数值型 (例:4)   返回:字符型的不带年份的日期范围文字(例:"3.2-3.8")*/function getWeekNoToDateRange($sYear,$sWeekNo){ $dateTemp=getWeekNoToFirstDay($sYear,$sWeekNo); $sDateRange = date('n.j',$dateTemp).'-'.date('n.j',strtotime("+6 day",$dateTemp)); return $sDateRange;}

    /* 功能:获取指定2个年周之间的周数   参数1:开始年号,字符型或数值型 (例:2011)   参数2:开始周号,字符型或数值型 (例:4)   参数1:结束年号,字符型或数值型 (例:2011)   参数2:结束周号,字符型或数值型 (例:26)   返回:数值型*/function getWeekNoToTotalWeeks($from_year,$from_week,$end_year,$end_week){ if(!$from_year or !$from_week or !$end_year or !$end_week){  return -1; } $time_from_yearweek=getWeekNoToFirstDay($from_year,$from_week); $time_end_yearweek=getWeekNoToFirstDay($end_year,$end_week); $total_weeks=($time_end_yearweek-$time_from_yearweek)/86400/7; if($total_weeks >= 0){  $total_weeks++; } return $total_weeks;}


    最新回复(0)