두 개의 날짜가 주어지면 PHP에서 평일 수를 찾는 가장 좋은 방법은 무엇입니까?
문제
제목은 거의 자명하다.두 개의 날짜가 주어지면 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;
다른 팁
송장 발행 시스템을 만드는 경우 은행 휴무일, 부활절 등을 고려해야 합니다.그것을 계산하는 것은 간단하지 않습니다.
내가 본 최고의 솔루션은 날짜와 해당 유형이 포함된 테이블을 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 타임스탬프 작업용)가 여기에 있습니다.
제휴하지 않습니다 StackOverflow