ホームページ >バックエンド開発 >PHPチュートリアル >PHP strtotime アプリケーション エクスペリエンス_PHP チュートリアル
strtotime(date("Y-m-01 00:00:00")); // 今月の初日のタイムスタンプを取得するために使用されます
実際の PHP strtotime アプリケーションで突然変換が発生しました実際の時間より8時間遅れてしまいました! php.ini の
タイムゾーン設定が間違っていることが原因だと思いました。一連の検査の後、最終的に strtotime 関数で問題をロックしました (問題は Linux サーバーでよく発生し、WINDOWS サーバーから返されるデータは基本的に正しい)
PHP マニュアルを注意深く読んで、最初のパラメーター time に形式要件があることがわかりました
time
GNU » Date Input Formats 構文に従って、解析する文字列。PHP 5.0.0 より前では、マイクロ秒は許可されませんでした。 PHP 5.0.0 以降では許可されていますが、無視されます。
見つかった日付入力形式についてはさらに続報
$ LC_ALL=C TZ=UTC0 date
Mon Mar 1 00:21:42 UTC 2004
$ TZ=UTC0 日付 +'%Y-%m-%d %H:%M:%SZ'
2004-03-01 00:21:42Z
$ 日付 --iso-8601=ns | tr T ' ' # --iso-8601 は GNU 拡張機能です。
2004-02-29 16:21:42,692722128-0800
$ date --rfc-2822 # GNU 拡張機能です
Sun, 29 Feb 2004 16:21:42 - 0800
$ 日付 +'%Y-%m-%d %H:%M:%S %z' # %z は GNU 拡張機能です。
2004-02-29 16:21:42 -0800
$ 日付 + ' @%s.%N' # %s と %N は GNU 拡張機能です。
@1078100502.692722128
一般的に使用されている形式 yyyy-mm-dd HH:ii:ss が要件を満たしていないことがわかりました。大まかに検討した結果、UTC0 形式を使用することにし、上記のコードを次のコードに更新しました
strtotime(date("Y-m-01 00:00:00")."Z"); // 初日の取得に使用します。今月のタイムスタンプ
この問題は解決しました!
PHP strtotime アプリケーションの概要:
開発プロセス中、システムのサポートにより、いくつかの詳細を見落とすことがありました。この例のように、この問題は WINDOWS プラットフォームでは発生しませんが、PHP strtotime アプリケーションは引き続き仕様に従う必要があります。そのような問題を避けるために。