[ php ] 해당 년도의 주차별 시작일 종료일 구하기
페이지 정보
작성자 웹지기 댓글 0건 조회 6,443회 작성일 18-09-11 12:32본문
//해당년도의 주차별 시작일 종료일구하기
//yearToWeek(2015) 배열로 저장(overlap을 false로 하면 52주 53주의 중복)
function yearToWeek($year,$overlap=true){
$k = 0;
$allWeek = array();
for($i=1; $i<=12;$i++)
{
$sa = mktime(0,0,0,$i,1,$year);
$ea = mktime(23,59,59,$i,date("t",$sa),$year);
$a = date("d",$ea);
for($j=1; $j<=$a;$j++)
{
//해당날짜의 요일
$dayOfTheWeek = date('w',mktime(0,0,0,$i,$j,$year));
//주차의 시작일
$sd = mktime(0,0,0,$i,$j-$dayOfTheWeek,$year);
$sd1 = date("Y-m-d",$sd);
$sdm = sprintf("%2d",date("m",$sd));
$sdd = sprintf("%2d",date("d",$sd));
//주차의 종료일
$ed = mktime(23,59,59,$i,$j+(6-$dayOfTheWeek),$year);
$ed1 = date("Y-m-d",$ed);
$edm = sprintf("%2d",date("m",$ed));
$edd = sprintf("%2d",date("d",$ed));
if($aa != $sd1)
{
$k++;
$allWeek[$k]['syear'] = $year;
$allWeek[$k]['smonth'] = $i;
$allWeek[$k]['sday'] = $j;
$allWeek[$k]['eyear'] = $year;
$allWeek[$k]['emonth'] = $edm;
$allWeek[$k]['eday'] = $edd;
//달이 틀리면? 두번을 넣어야 하는데???
if($overlap)
{
if($i != $edm)
{
//해당달의 시작일
$msd = mktime(23,59,59,$i,1,$year);
//해당월의 마지막 날짜
$med = mktime(23,59,59,$i,date("t",$msd),$year);
$med1 = date("Y-m-d",$med);
$medd = date("d",$med);
$allWeek[$k]['syear'] = $year;
$allWeek[$k]['smonth'] = $i;
$allWeek[$k]['sday'] = $j;
$allWeek[$k]['eyear'] = $year;
$allWeek[$k]['emonth'] = $i;
$allWeek[$k]['eday'] = $medd;
$k++;
$allWeek[$k]['syear'] = $year;
$allWeek[$k]['smonth'] = $edm;
$allWeek[$k]['sday'] = 1;
$allWeek[$k]['eyear'] = $year;
$allWeek[$k]['emonth'] = $edm;
$allWeek[$k]['eday'] = $edd;
}
}
//echo($k."~~~~~~~".$year."년".$i."월".$j."일====".$sd1."~~".$ed1."<br/>");
}
$aa = $sd1;
}
}
Return $allWeek;
}
댓글목록
등록된 댓글이 없습니다.