0

デフォルトのタイムゾーンを設定せずにstrtotimeを使用すると、通常のPHP警告が表示されます。

PHP警告:date_default_timezone_get():システムのタイムゾーン設定に依存することは安全ではありません。date.timezone設定またはdate_default_timezone_set()関数を使用する必要があります。これらの方法のいずれかを使用してもこの警告が表示される場合は、タイムゾーン識別子のスペルを間違えている可能性があります。代わりに、「CST / -6.0/noDST」に「America/Chicago」を選択しました

何をする必要があるかについて多くのことを読みましたが、基本的にデフォルトのタイムゾーンを設定する方法はないようです(php.iniでdate.timezone = "America / Chicago"として、またはPHPでdate_default_timezone_setを使用して) ('CST6CDT')または同様のもの)。

私の問題は、デモ用に異なるタイムゾーンに頻繁に配置される移動サーバーがあるため、固定のタイムゾーンを設定して、どこに行ってもすべてを機能させることができないことです...

または私はできますか?もちろん、タイムゾーンの概念全体を完全に誤解している可能性もあります;-)率直に言って、読んでいくほど混乱してしまいます...サーバーのシステム時間がどのように影響を受けるかもわかりません。別のタイムゾーンのネットワークに接続します-まだわからない、または理解していないことが多すぎます(申し訳ありません...)。

これらのエラーメッセージを停止したい主な理由は、これが私の開発サーバーでもあるため、エラーログを何度もふるいにかける必要があり、これらすべての行を除外する必要があるのは大きな苦痛です...

さらに、サーバー上のアプリケーションは現地時間を使用するだけでなく、一部のデータを静的サーバーと同期するため、多くのメインサーバーコードも調整する必要があることを痛感しています。そのために、実際のタイムゾーンまたはUTCを簡単に強制できます。

では、ここでの最良のオプションは何ですか?

UTCをデフォルトのタイムゾーンとしてハードコーディングしてから、データベースに設定を作成し、タイムゾーンを切り替えてすべてのコードを更新してすべてを使用できるようにするユーザーインターフェイスを作成する必要があります。それとも、より適切で簡単な方法があります。 ?

または、問題全体を無視して、使用するすべてのstrtotimeに@を追加する必要がありますか?(小さな暴動に備えて...);-)

どんな提案も楽しみにしています...ありがとう!

4

1 に答える 1

1

アンディ・ジョーンズは正しいです。最善の策は、サーバーを完全にベースライン化することです。つまり、すべてのエンコーディング (bash、mysql) を UTF-8 に設定し、タイムゾーンを UTC に設定するということです。最初からこれを行うと、将来の頭痛の種を大幅に減らすことができます。

あなたが尋ねた質問に関して、データベースにすべてのタイムスタンプをUTCとして保存する場合、エンドユーザーのタイムゾーンに基づいて変換するだけで済みます。これにより、データベースに保存されているタイムゾーンが PST か EST かを判断して、ユーザーのタイムゾーンに変換する必要がなくなります。さらに、タイムゾーン間でサーバーを移動できます。たとえば、複数のタイムゾーンで VPS を使用しており、それぞれが同じデータベースにフィードしている場合、すべてのタイムゾーン エントリが一貫していることが保証されます。

于 2013-02-21T22:31:01.473 に答える