>  기사  >  백엔드 개발  >  내 PHP 코드가 월 숫자를 올바른 달이 아닌 12월로 변환하는 이유는 무엇입니까?

내 PHP 코드가 월 숫자를 올바른 달이 아닌 12월로 변환하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-07 02:27:03157검색

Why Does My PHP Code Convert a Month Number to December Instead of the Correct Month?

PHP에서 숫자를 월 이름으로 변환

sprintf와 날짜의 조합을 사용하여 숫자로 된 월 값을 해당 이름으로 변환하려고 할 때 함수를 사용하는 경우 의도한 달 대신 12월이 출력에 표시되는 예기치 않은 문제가 발생할 수 있습니다.

문제:

제공된 코드 $monthNum = sprintf(" s", $result["월"]); $monthName = date("F", strtotime($monthNum));, 숫자 월 값에 선행 0을 잘못 추가하고 있습니다. 이로 인해 날짜 함수가 결과 값을 원하는 달이 아닌 12월로 해석하게 됩니다.

해결책:

권장 접근 방식:

권장되는 솔루션은 날짜 및 시간 계산에 DateTime 객체를 활용하는 것입니다. PHP 버전 5.2 이상의 경우 다음 코드를 사용할 수 있습니다.

<code class="php">$monthNum  = 3;
$dateObj   = DateTime::createFromFormat('!m', $monthNum);
$monthName = $dateObj->format('F'); // March</code>

! 형식 지정 문자는 모든 값을 Unix 시대로 재설정하고 m 형식은 앞에 0이 붙은 월의 숫자 표현을 나타냅니다.

대체 솔루션(이전 PHP 버전의 경우):

5.2 이하 PHP 버전의 경우 mktime 함수를 사용하여 타임스탬프를 생성한 다음 이를 날짜 함수의 두 번째 매개변수로 전달할 수 있습니다.

<code class="php">$monthNum  = 3;
$monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March</code>

여기서 mktime은 첫날에 대한 타임스탬프를 생성합니다. 지정된 달의. 함수의 10을 해당 월의 원하는 날짜로 조정합니다.

이러한 솔루션을 사용하면 숫자로 된 월 값을 PHP의 해당 이름으로 올바르게 변환할 수 있습니다.

위 내용은 내 PHP 코드가 월 숫자를 올바른 달이 아닌 12월로 변환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.