현재 위치: > 최신 기사 목록> 날짜 구문 분석이 실패하면 date_get_last_errors () 함수를 통해 자세히 디버그하는 방법?

날짜 구문 분석이 실패하면 date_get_last_errors () 함수를 통해 자세히 디버그하는 방법?

gitbox 2025-09-08
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 이 부분은 기사의 내용과 관련이 없습니다.</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"읽기에 오신 것을 환영합니다 PHP 디버깅 가이드!\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"오늘 우리는 심층 날짜 구문 분석 오류 디버깅을 탐색 할 것입니다。\n"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

존재하다 PHP 가운데,날짜와 시간을 처리하는 것은 매우 일반적인 작업입니다,但有时候我们존재하다使用 `</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-title function_ invoke__">date_parse</span></span><span>()` 날짜를 구문 분석 할 때,구문 분석 실패 상황이있을 수 있습니다。为了准确找出问题所존재하다,PHP 제공 `</span><span><span class="hljs-title function_ invoke__">date_get_last_errors</span></span><span>()` 기능,개발자가 구문 분석 실패에 대한 자세한 정보를 얻는 데 도움이 될 수 있습니다.,이것은 디버깅을 용이하게합니다。

</span><span><span class="hljs-comment">## 1. date_get_last_errors() 의 역할</span></span><span>

`</span><span><span class="hljs-title function_ invoke__">date_get_last_errors</span></span><span>()` 연관 배열을 반환합니다,두 가지 유형의 정보가 포함되어 있습니다:

- **warning_count**:경고 수  
- **warnings**:경고 메시지 배열  
- **error_count**:오류 수  
- **errors**:오류 메시지 배열  

이 정보를 통해,분석 실패의 특정 이유를 판단 할 수 있습니다.,예를 들어 형식이 일치하지 않습니다、잘못된 날짜、불법 시간 등。

</span><span><span class="hljs-comment">## 2. 사용의 예</span></span><span>

다음은 일반적인 사용 시나리오입니다:

```php
</span><span><span class="hljs-variable">$dateString</span></span><span> = </span><span><span class="hljs-string">'2025-13-40'</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'</span></span><span>;

</span><span><span class="hljs-variable">$date</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">$dateString</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$date</span></span><span>) {
    </span><span><span class="hljs-variable">$errors</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date_get_last_errors</span></span><span>();
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"분석이 실패했습니다!\n"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"오류 수: "</span></span><span> . </span><span><span class="hljs-variable">$errors</span></span><span>[</span><span><span class="hljs-string">'error_count'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"경고 수: "</span></span><span> . </span><span><span class="hljs-variable">$errors</span></span><span>[</span><span><span class="hljs-string">'warning_count'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
    
    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$errors</span></span><span>[</span><span><span class="hljs-string">'errors'</span></span><span>])) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"오류 세부 사항:\n"</span></span><span>;
        </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$errors</span></span><span>[</span><span><span class="hljs-string">'errors'</span></span><span>] </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$error</span></span><span>) {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"  - <span class="hljs-subst">$error</span></span></span><span>\n";
        }
    }
    
    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$errors</span></span><span>[</span><span><span class="hljs-string">'warnings'</span></span><span>])) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"경고 세부 사항:\n"</span></span><span>;
        </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$errors</span></span><span>[</span><span><span class="hljs-string">'warnings'</span></span><span>] </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$warning</span></span><span>) {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"  - <span class="hljs-subst">$warning</span></span></span><span>\n";
        }
    }
} </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><span class="hljs-variable">$date</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d'</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span></span>

위의 코드를 실행하면 다음 출력이 표시 될 수 있습니다.

 <span><span>분석이 실패했습니다!
</span><span><span class="hljs-section">오류 수: 2</span></span><span>
</span><span><span class="hljs-section">경고 수: 0</span></span><span>
</span><span><span class="hljs-section">오류 세부 사항:</span></span><span>
  - The parsed date was invalid
  - The parsed date was invalid
</span></span>

이러한 세부 사항을 사용하면 법적 범위를 벗어난 달이나 날짜와 같은 문제를 신속하게 찾을 수 있습니다.

3. 주목할만한 것들

  1. DATE_GET_LAST_ERRORS () 마지막 날짜 구문 분석에 대한 오류 메시지를 반환하므로 구문 분석에 실패한 직후에 호출해야합니다.

  2. DateTime :: CreateFromFormat () 뿐만 아니라 date_parse ()date_parse_from_format () 에도 유효합니다.

  3. 구문 분석이 성공하면 반환 된 배열의 error_countwarment_count 는 0이며 오류경고 배열은 비어 있습니다.

4. 요약

날짜 구문 분석이 실패하면 date_get_last_errors ()는 매우 실용적인 디버깅 도구입니다. 오류 및 경고에 대한 특정 정보를 제공하고 개발자가 날짜 형식 또는 데이터의 문제를 신속하게 찾을 수 있도록 도와주고 디버깅 효율성을 향상시킬 수 있습니다.

date_get_last_errors ()를 올바르게 사용하면 개발 중에 다양한 복잡한 날짜 형식과 잠재적 입력 오류를보다 침착하게 처리 할 수 ​​있습니다.

 <span></span>