> 백엔드 개발 > PHP 튜토리얼 > 8월을 월 이름으로 변환할 때 PHP 코드가 '8월' 대신 '12월'을 반환하는 이유는 무엇입니까?

8월을 월 이름으로 변환할 때 PHP 코드가 '8월' 대신 '12월'을 반환하는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-05 10:51:02
원래의
877명이 탐색했습니다.

Why is my PHP code returning

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

문제:

월 숫자를 월 이름으로 변환하는 코드를 구현했습니다. PHP에서 월 이름을 입력했지만 잘못된 결과를 반환합니다. 특히 월이 8일 때 코드는 "8월" 대신 "12월"을 반환합니다.

분석:

문제는 sprintf가 함수는 월 숫자에 앞에 0을 추가하여 "8" 대신 "08"이 됩니다. 이로 인해 날짜 함수는 입력을 8월이 아닌 12월에 해당하는 앞에 0이 있는 달의 숫자 표현으로 해석합니다.

권장 해결 방법:

이 문제를 해결하려면 날짜/시간 조작 작업에 DateTime 개체를 사용하는 것이 좋습니다. PHP 버전 >= 5.2의 경우 다음 코드를 사용할 수 있습니다:

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

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

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

또는 최신 PHP 버전으로 업그레이드할 수 없는 경우 다음 코드를 사용할 수 있습니다.

<code class="php">$monthNum  = 3;
$monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March</code>
로그인 후 복사

여기서 날짜 함수의 두 번째 매개변수는 타임스탬프를 허용합니다. mktime 함수는 지정된 월 번호와 일(이 경우 해당 월의 10일)을 나타내는 타임스탬프를 생성하는 데 사용됩니다. 3글자로 된 월 이름(예: Mar)을 얻으려면 F 형식 문자를 M으로 변경하세요.

추가 정보:

PHP 매뉴얼에서 포괄적인 목록을 제공합니다. 날짜 기능에 사용할 수 있는 모든 형식 지정 옵션

위 내용은 8월을 월 이름으로 변환할 때 PHP 코드가 '8월' 대신 '12월'을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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