두 개의 날짜가 주어지면 PHP에서 평일 수를 찾는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/80541

  •  09-06-2019
  •  | 
  •  

문제

제목은 거의 자명하다.두 개의 날짜가 주어지면 PHP를 사용하여 요일 수를 찾는 가장 좋은 방법은 무엇입니까?평일은 월요일부터 금요일까지 입니다.

예를 들어, 그 사이에 10일이 있는지 어떻게 알 수 있나요? 31/08/2008 그리고 13/09/2008?

도움이 되었습니까?

해결책

        $datefrom = strtotime($datefrom, 0);
        $dateto = strtotime($dateto, 0);

        $difference = $dateto - $datefrom;

        $days_difference = floor($difference / 86400);
        $weeks_difference = floor($days_difference / 7); // Complete weeks

        $first_day = date("w", $datefrom);
        $days_remainder = floor($days_difference % 7);

        $odd_days = $first_day + $days_remainder; // Do we have a Saturday or Sunday in the remainder?
        if ($odd_days > 7) { // Sunday
            $days_remainder--;
        }
        if ($odd_days > 6) { // Saturday
            $days_remainder--;
        }

        $datediff = ($weeks_difference * 5) + $days_remainder;

여기에서: http://www.addbytes.com/php/php-datediff-function/

다른 팁

송장 발행 시스템을 만드는 경우 은행 휴무일, 부활절 등을 고려해야 합니다.그것을 계산하는 것은 간단하지 않습니다.

내가 본 최고의 솔루션은 날짜와 해당 유형이 포함된 테이블을 SQL 데이터베이스에 미리 생성한 다음(일당 행 = 연간 365개 행) 적절한 선택(WHERE 절)을 사용하여 간단한 개수 쿼리를 수행하는 것입니다.

이 솔루션은 다음에서 자세히 설명되어 있습니다. Joe Celko의 세트별 사고:SQL의 보조, 임시 및 가상 테이블

한 가지 방법은 strtotime(...)을 사용하여 날짜를 유닉스 타임스탬프로 변환하고 결과를 빼고 86400(24*60*60)으로 나누는 것입니다.

$dif_in_seconds = abs(strtotime($a) - strtotime($b));
$daysbetween = $dif_in_seconds / 86400;

예상 시간:오..월~금요일을 뜻하셨는데요..처음엔 안보이던데..

가장 좋은 방법은 지정된 날짜 범위 사이의 모든 날짜를 반복하고 각 날짜의 요일을 얻는 것입니다.평일이면 특정 카운터를 증가시킵니다.프로세스가 끝나면 평일 수가 표시됩니다.

PHP 함수 mktime() 및 date()(UNIX 타임스탬프 작업용)가 여기에 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top