PHP에서 두 날짜 사이의 개월 수를 정확하게 계산하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-11-02 12:04:02
원래의
613명이 탐색했습니다.

How can I calculate the number of months between two dates with precision in PHP?

두 날짜 사이의 기간을 정밀하게 결정

다음 시나리오를 고려해 보세요. 두 날짜가 변수로 저장되어 있고 숫자를 계산해야 합니다. 그들 사이의 개월. PHP를 사용하여 이 작업을 어떻게 우아하게 수행할 수 있습니까?

날짜 함수 활용

PHP 버전 5.3 이상에서는 DateTime 클래스를 제공하여 시차를 정확하게 계산할 수 있습니다. 제공된 날짜를 사용하여 두 개의 DateTime 객체를 인스턴스화하고 diff() 메서드를 사용하여 DateInterval 객체를 얻습니다.

<code class="php">$d1 = new DateTime("2009-09-01");
$d2 = new DateTime("2010-05-01");

var_dump($d1->diff($d2)->m); // int(4)
var_dump($d1->diff($d2)->m + ($d1->diff($d2)->y*12)); // int(8)</code>
로그인 후 복사

이전 PHP 버전에 대한 대체 접근 방식

PHP의 경우 5.3 이전 버전에서는 Unix 타임스탬프를 활용할 수 있습니다. strtotime()을 사용하여 날짜를 타임스탬프로 변환하고 절대 차이를 계산한 다음 이를 하루의 초 수와 한 달의 평균 일 수로 나눕니다.

<code class="php">$d1 = "2009-09-01";
$d2 = "2010-05-01";

echo (int)abs((strtotime($d1) - strtotime($d2))/(60*60*24*30)); // 8</code>
로그인 후 복사

데이터베이스 고려 사항

데이터베이스에서 파생된 날짜의 경우 데이터베이스에 내장된 시차 계산 기능을 활용하는 것이 좋습니다.

정확한 월 계산

정밀도가 중요하고 DateTime::diff나 데이터베이스 기능을 모두 사용할 수 없는 상황에서는 루프 기반 접근 방식을 채택하여 최대 날짜를 초과할 때까지 최소 날짜가 한 달 앞으로 갈수록 카운터를 늘릴 수 있습니다.

<code class="php">$d1 = strtotime("2009-09-01");
$d2 = strtotime("2010-05-01");
$min_date = min($d1, $d2);
$max_date = max($d1, $d2);
$i = 0;

while (($min_date = strtotime("+1 MONTH", $min_date)) <= $max_date) {
    $i++;
}
echo $i; // 8</code>
로그인 후 복사

위 내용은 PHP에서 두 날짜 사이의 개월 수를 정확하게 계산하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!