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