<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// この記事のサンプルプログラムは、方法を示すためにのみ使用されます PHP 処理 date_default_timezone_get() そして strtotime() タイムゾーンを一緒に使用する場合の問題。</span></span><span>
</span><span><span class="hljs-comment">// 由于前面的注释部分そして正文内容无关,したがって、水平線を使用して分離します。</span></span><span>
</span><span><span class="hljs-comment">// ------------------------------------------------------------</span></span><span>
<span class="hljs-comment">/**
* それを解決する方法 date_default_timezone_get() そして strtotime() タイムゾーンの問題を使用する場合の問題?
*
* 存在する PHP 真ん中,`date_default_timezone_get()` 現在のスクリプト実行環境でデフォルトのタイムゾーンを取得するために使用されます,
* そして `strtotime()` 则会存在する解析日期字符串时使用这个默认时区进行计算。
* デフォルトのタイムゾーンが適切に設定されていない場合,日付と時刻の分析に逸脱を引き起こします。
*
* **FAQの例**
*
* ```php
* echo date_default_timezone_get(); // 可能な出力 UTC
* echo strtotime("2025-08-13 12:00:00"); // 結果はに基づいています UTC
* ```
*
* 这存在する开发そして部署环境不一致时尤为常见,たとえば、デフォルトのタイムゾーンはです `Asia/Shanghai`,
* しかし、生産サーバーはそうかもしれません `UTC`,从そして导致解析结果相差数小时。
*
* **解決**
*
* 1. **デフォルトのタイムゾーンを明示的に設定します**
*
* 存在する脚本开始位置使用 `date_default_timezone_set()`,動作環境が何であれ、,時間分析は常に一貫しています。
*
* ```php
* date_default_timezone_set('Asia/Shanghai');
* $timestamp = strtotime("2025-08-13 12:00:00");
* echo date("Y-m-d H:i:s", $timestamp);
* ```
*
* 2. **存在する strtotime 真んタイムゾーンでタイム文字列を使用します**
*
* デフォルトタイムゾーンをグローバルに変更したくない場合,可以存在する传给 `strtotime()` 的字符串真ん中指定时区:
*
* ```php
* $timestamp = strtotime("2025-08-13 12:00:00 +08:00");
* echo date("Y-m-d H:i:s", $timestamp);
* ```
*
* このように、デフォルトのタイムゾーンがそうであっても `UTC`,また、北京時間として正しく解析されます。
*
* 3. **組み合わせた DateTime オブジェクトの使用**
*
* `DateTime` オブジェクトは、より柔軟なタイムゾーン制御を提供します,可以存在する实例化时直接传入目标时区:
*
* ```php
* $dt = new DateTime("2025-08-13 12:00:00", new DateTimeZone("Asia/Shanghai"));
* echo $dt->getTimestamp();
* ```
*
* **要約します**
*
* - `date_default_timezone_get()` 現在のデフォルトタイムゾーンを反映しています,必ずしも予想されるビジネスタイムゾーンに沿っているわけではありません。
* - `strtotime()` 存在する解析字符串时完全依赖默认时区,文字列自体にタイムゾーン情報がない限り。
* - ベストプラクティスはです:または、タイムゾーンをグローバルに設定します,要么存在する每次解析时显式传入时区,環境の違いにより、時間の逸脱を避けてください。
*/</span>
</span></span>