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

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

Barbara Streisand
Barbara Streisand원래의
2024-11-05 10:51:02830검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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