2011-03-28 5 views
1

매월 주와 요일 수를 계산하는 방법.매월 주와 요일 수를 계산하는 방법

+0

나는 원하지 않습니다. 이 날짜의 예를 들어 어떤 달든 주 6 월 01-2011 주. 아이디어가 있습니까? – Layric

+0

주의 첫날은 무엇이며 마지막 날은 무엇입니까? 일요일에 시작하는 캘린더와 월요일에 시작하는 다른 캘린더를 설명하기 위해 주어진 알고리즘을 조정해야합니다. – oosterwal

답변

11

는, 내가 당신을 찾은 것 같아 : "무슨 일이 일주일의 시작 날이다"

그것은에 따라
$days = cal_days_in_month(CAL_GREGORIAN, 1, 2011); 

$week_day = date("N", mktime(0,0,0,1,1,2011)); 

$weeks = ceil(($days + $week_day)/7); 

echo $weeks; 
+0

몇 년 전,이 기능을 사용하여 완벽하게 작동하는 'show-Human-Date'PHP 함수를 만들 수있었습니다. : 초, 분, 시간, 일, 주, 월, 년 cal_days_in_month이 트릭을했습니다. 감사합니다 – KJS

+1

2020-feb return 6 expect 5 2009-feb return 5 expect 4, 2012 년 6 월 반환 값 6은 2014 년 5 월 5 일을 기다리고 6은 5를 반환합니다. – vee

5

이 코드는 일 수, 주를 반환합니다. 좋아

<?php 
for ($year = 2011; $year <= 2012; $year++){ 
    for ($month = 1; $month <= 12; $month++){ 
     $num_of_days = date("t", mktime(0,0,0,$month,1,$year)); 
     $month_Year = date("F",mktime(0, 0, 0, $month, 1, $year)); 
     echo "<b>$month_Year, $year </b><BR>"; 
     echo "Number of days = $num_of_days <BR>"; 
     $firstdayname = date("D", mktime(0, 0, 0, $month, 1, $year)); 
     $firstday = date("w", mktime(0, 0, 0, $month, 1, $year)); 
     $lastday = date("t", mktime(0, 0, 0, $month, 1, $year)); 
     $lastdayname = date("D", mktime(0, 0, 0, $month, $lastday, $year)); 
     echo "First day of the month = $firstday,$firstdayname <BR> "; 
     echo "Last day of the month = $lastday,$lastdayname <BR> "; 
     $no_of_weeks = 1; 
     $count_weeks = 0; 
     while($no_of_weeks <= ($lastday+$firstday)){ 
      $no_of_weeks += 7; 
      $count_weeks++; 
     } 
     echo "Number Of weeks = $count_weeks <br><br>"; 
    } 
} 
?> 
+0

죄송합니다. $ lastday와 $ firstday의 출처가 어디인지 알 수없는 것 같습니다. –

+0

오! 이전에 코드를 작성하여 달의 첫 번째 날과 마지막 날을 찾아 냈습니다. 그것을 잊어 버렸습니다. –

+0

지금 편집 됨. 확인해 봐 ! –

0

우리의 첫 번째 요일이 월요일이라고 가정 해 봅시다. 한 달에 5 개의 월요일이 있다면, 우리는 한 달 동안 5 주를 가질 것입니다.

function nbweeks_of_month($month, $year){ 
    $nb_days = cal_days_in_month(CAL_GREGORIAN, $month, $year); 
    $first_day = date('w', mktime(0, 0, 0, $month, 1, $year)); 

    if($first_day > 1 && $first_day < 6){ 
     // month started on Tuesday-Friday, no chance of having 5 weeks 
     return 4; 
    } else if($nb_days == 31) return 5; 
    else if($nb_days == 30) return ($first_day == 0 || $first_day == 1)? 5:4; 
    else if($nb_days == 29) return $first_day == 1? 5:4; 
} 
0
<?php 

function weeks($month, $year){ 
     $num_of_days = date("t", mktime(0,0,0,$month,1,$year)); 
     $lastday = date("t", mktime(0, 0, 0, $month, 1, $year)); 
     $no_of_weeks = 0; 
     $count_weeks = 0; 
     while($no_of_weeks < $lastday){ 
      $no_of_weeks += 7; 
      $count_weeks++; 
     } 
    return $count_weeks; 
} 

echo weeks(2,2011)."<br/>"; 
echo weeks(9,2012)."<br/>"; 

?> 
관련 문제