문제:
월 숫자를 월 이름으로 변환하는 코드를 구현했습니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!