現在の位置: ホーム> 最新記事一覧> 日付の解析が失敗したとき、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>()` 連想配列を返します,2種類の情報が含まれています:

- **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_CountWarning_Countは0であり、エラー警告配列は空です。

4。概要

日付の解析が失敗すると、 date_get_last_errors()は非常に実用的なデバッグツールです。エラーや警告に関する特定の情報を提供し、開発者が日付の形式やデータの問題をすばやく見つけ、デバッグ効率を改善することができます。

date_get_last_errors()を適切に使用することにより、開発により、さまざまな複雑な日付形式と潜在的な入力エラーをより冷静に処理できます。

 <span></span>