php에서 strptime () 함수는 날짜와 시간 문자열을 배열 형태로 구문 분석하고 구문 분석 된 결과를 지정된 형식으로 반환하는 데 사용됩니다. 이 기능은 일반적으로 날짜 및 시간 관련 작업을 처리 할 때 매우 유용합니다. 그러나 개발 중에는 strptime () 가 구문 분석에 실패하여 거짓으로 거짓 으로 인해 디버깅이 어려워집니다.
이 기사는 STRPTIME () 구문 분석 실패의 일반적인 오류 원인을 심층적으로 탐색하고 해당 솔루션을 제공합니다.
strptime () 의 첫 번째 매개 변수는 날짜 시간 문자열이고 두 번째 매개 변수는 형식 문자열입니다. DateTime String이 형식화 된 문자열과 일치하지 않으면 strptime () 가 올바르게 구문 분석되지 않고 False를 반환합니다.
<span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"2025-06-17 15:30"</span></span><span>;
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%Y/%m/%d"</span></span><span>; </span><span><span class="hljs-comment">// 잘못된 형식</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>); </span><span><span class="hljs-comment">// 산출false</span></span><span>
</span></span>
DateTime String이 형식화 된 문자열과 정확히 일치하는지 확인하십시오. 예를 들어, DateTime 문자열이 2025-06-17 15:30 인 경우, 형식의 문자열은 "%y-%m-%d%H :%m" 이어야합니다.
<span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"2025-06-17 15:30"</span></span><span>;
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%Y-%m-%d %H:%M"</span></span><span>; </span><span><span class="hljs-comment">// 올바른 형식</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>); </span><span><span class="hljs-comment">// 올바른 분석,반환 결과</span></span><span>
</span></span>
strptime ()은 %y , %m , %d , %h , %m 등과 같은 일부 표준 형식의 플래그를 지원하지만 때로는 지원되지 않는 플래그를 사용하거나 부적절한 상황을 사용하려고하는 개발자가 발생합니다.
<span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"2025-06-17 15:30"</span></span><span>;
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%G-%m-%d %H:%M"</span></span><span>; </span><span><span class="hljs-comment">// 부정확하게 사용되지 않은 포맷 플래그</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>); </span><span><span class="hljs-comment">// 산출false</span></span><span>
</span></span>
strptime ()을 사용할 때는 PHP에서 지원하는 표준 서식 플래그를 사용해야합니다. 보다 복잡한 날짜 형식 구문 분석이 필요한 경우 strptime () 대신 DateTime :: CreateFromFormat ( )를 사용하는 것을 고려하십시오.
<span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"2025-06-17 15:30"</span></span><span>;
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%Y-%m-%d %H:%M"</span></span><span>; </span><span><span class="hljs-comment">// 올바른 형식</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>); </span><span><span class="hljs-comment">// 올바른 분석,반환 결과</span></span><span>
</span></span>
때로는 DateTime 문자열 자체에 부적절한 문자가 포함되어있어 strptime ()가 구문 분석 할 수 없습니다. 예를 들어, 문자열에는 추가 공백 또는 잘못된 날짜 부분이 포함되어 있습니다.
<span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"2025-06-17 15:30"</span></span><span>; </span><span><span class="hljs-comment">// 날짜 문자열에는 여분의 공간이 있습니다</span></span><span>
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%Y-%m-%d %H:%M"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>); </span><span><span class="hljs-comment">// 산출false</span></span><span>
</span></span>
strptime ()을 통과하기 전에 추가 공간이나 유효하지 않은 문자를 정리하거나 사용하면 데이터를 일관되게 유지하십시오.
<span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"2025-06-17 15:30"</span></span><span>;
</span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-title function_ invoke__">trim</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>); </span><span><span class="hljs-comment">// 여분의 공간을 깨끗하게하십시오</span></span><span>
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%Y-%m-%d %H:%M"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>); </span><span><span class="hljs-comment">// 올바른 분석,반환 결과</span></span><span>
</span></span>
strptime () 함수의 구문 분석 거동은 시스템 시간 로케일에 의해 영향을받을 수 있습니다. 시스템의 로케일 설정이 날짜 문자열의 언어/영역과 일치하지 않으면 구문 분석이 실패 할 수 있습니다.
<span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"17 Juin 2025 15:30"</span></span><span>; </span><span><span class="hljs-comment">// 프랑스 날짜</span></span><span>
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%d %b %Y %H:%M"</span></span><span>; </span><span><span class="hljs-comment">// 프랑스의 달</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>); </span><span><span class="hljs-comment">// 산출false</span></span><span>
</span></span>
strptime ()을 사용할 때 시스템의 로케일이 적절하게 설정되거나 체크되어 있는지, 특히 날짜 문자열에 월 또는 주가 포함 된 경우. 현재 로케일은 setLocale () 함수를 통해 조정될 수 있습니다.
<span><span><span class="hljs-title function_ invoke__">setlocale</span></span><span>(LC_TIME, </span><span><span class="hljs-string">'fr_FR.UTF-8'</span></span><span>); </span><span><span class="hljs-comment">// 프랑스어로 설정하십시오</span></span><span>
</span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"17 Juin 2025 15:30"</span></span><span>;
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%d %b %Y %H:%M"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strptime</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-variable">$format</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>); </span><span><span class="hljs-comment">// 올바른 분석,반환 결과</span></span><span>
</span></span>
strptime ()은 유용성을 가지고 있지만 PHP의 DateTime 클래스에 비해 기능과 유연성이 약간 불충분합니다. strptime () 해상도 실패의 문제를 여러 번 직면하면 Datetime :: CreateFromFormat () 메소드를 사용하여보다 강력한 날짜 시간 해상도 기능을 제공 할 수 있습니다.
<span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-string">"2025-06-17 15:30"</span></span><span>;
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"Y-m-d H:i"</span></span><span>; </span><span><span class="hljs-comment">// 사용DateTime분석</span></span><span>
</span><span><span class="hljs-variable">$datetime</span></span><span> = </span><span><span class="hljs-title class_">DateTime</span></span><span>::</span><span><span class="hljs-title function_ invoke__">createFromFormat</span></span><span>(</span><span><span class="hljs-variable">$format</span></span><span>, </span><span><span class="hljs-variable">$date</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$datetime</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$datetime</span></span><span>); </span><span><span class="hljs-comment">// 산출日期对象</span></span><span>
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"분석失败"</span></span><span>;
}
</span></span>
DateTime :: CreateFromFormat () 메소드는 더 넓은 형식을 지원할뿐만 아니라 더 많은 오류 처리 기능을 제공하므로 개발자가 디버그하는 것이 더 편리합니다.
strptime ()을 사용할 때, 구문 분석 실패의 일반적인 이유에는 형식 불일치, 지원되지 않은 서식 플래그 사용, 입력 데이터 예외 사용, 시간 영역 설정 문제 등이 포함됩니다. 이러한 문제를 해결하기 위해 개발자는 형식 일치, 입력 데이터 정리, 올바른 로케일 설정 및 데이터 시간 클래스 사용을 고려하여 구문 분석의 정확성과 안정성을 향상시킬 수 있습니다. 보다 복잡한 날짜 시간 구문 분석 요구 사항의 경우 DateTime 클래스는보다 현대적이고 강력한 대안입니다.