0

この投稿を作成しているのは、プロセスを正しく理解していることを確認し、さまざまなタイムゾーンのユーザーに対して投稿時間が正しく表示および保存される問題を解決するためのいくつかの小さな詳細についてのフィードバックを得るためです。

時間を保存する

最初のステップは、javascript関数を使用してユーザーのタイムゾーンをGMTオフセット形式として取得し、それをセッション変数に格納することです。たとえば、$timezone変数はGMT-4を格納します

$timezone=$_SESSION['time'];

次に、ユーザーのタイムゾーンを取得したら。ユーザーが投稿するとき、投稿時刻をmysqlデータベースに保存します。UTC形式で保存する必要があります。どうすればこれを行うことができますか?現在、時間データを保存しているとき。それは次のようになります。私のスタンプフィールドは日時形式なので、できればそのままにしておきたいと思います。

INSERT INTO posts (stamp) VALUES (now())

データベースに挿入されるUTC形式を取得するためにnow()の代わりにどの関数を使用しますか?$timezoneを使用してUTC日付を生成するphp関数を使用する必要があると思います。

時刻の表示

次に、UTC日付がデータベースに保存されたら。設定した$timezone変数に基づいてデータをユーザーに表示する必要があります。

ですから、時間を表示するときは、現在

echo date('F d', strtotime($list1['stamp']));

データをUTC時間として保存すると、UTC時間が表示されますが、ユーザーにタイムゾーンのUTCオフセットを表示する必要があるため、$list['stamp']$timezoneを使用してUTC時間をユーザーのタイムゾーンに変換する必要があります。このためにどの機能を使用しますか?

tl:dr これが私がこの仕事をするために必要なすべてであるはずです。提案や私が説明していない項目があれば、データベースに保存するために時刻をUTCに変換するために使用する必要がある関数と、UTC時刻を変換するために使用する関数を知っている場合はお知らせください。 $ timezone変数を使用して、ユーザーを表示します。

4

1 に答える 1

1

UTC 時刻をデータベースに挿入する場合:

INSERT INTO posts (stamp) VALUES (UTC_DATE())

更新:これにより、YYYY-MM-DD のみがデータベースに挿入されます。時間も必要な場合は、次を使用します。

INSERT INTO posts (stamp) VALUES (UTC_TIMESTAMP())

次に、タイムゾーンに従って日付を印刷します。

$date = date_create($list1['stamp'], timezone_open($timezone)); //$timezone='Pacific/Nauru';
echo date_format($date, 'F d');

それはあなたが始めるのを助けるはずです。オブジェクト指向メソッド用の PHP のDateTime クラスと、よりクリーンなプログラミング全般について学んでください。

于 2012-05-13T03:03:33.730 に答える