3

この質問は何度も聞かれるかもしれないことは承知していますが、確かに私はほとんど疑いを持っていません.ちなみに、私が試したことについてコメントしないでください.私は多くの方法を試しましたが、何が正しいかを尋ねているだけです.これらのタスクを達成するためのさまざまな提案がここに残っている多くの投稿があるため、より簡単な方法なのでexplode()、質問をより小さな質問にします...

日付/時刻に関して多くの人が混乱していると確信しているので、どこが正しいか間違っているかを教えてもらえますか

1)PHPを使用してMySQLで時間をUTCとして保存する理由/方法は? 個人的には、これを php を使用して投稿し、mysql の日付フィールド$year/$month/$dayを使用して日付を確認します。checkdate()それで大丈夫ですか、それともtimestampPHPを使用してフロントエンドで取得した文字列を爆発させるよりも使用する必要がありますか?

2)インドからサーバーを実行している場合、date_default_timezone_set("Asia/Calcutta");php関数を使用して時間を減算して追加するよりも、デフォルト時間を記録する必要がありますか、または投稿中にのみ、ユーザーアカウントから選択されたユーザーのタイムゾーンを確認し、それに応じて条件を設定する必要があります:

if(timezoneselected == +5.30) {
echo date_default_timezone_set("Asia/Calcutta");
} elseif(timezoneselected == +anytime) {
echo another country timezone
}

3) 最後の質問は、gmail facebook などのウェブサイトがどのように時間を管理しているかです。私が別のユーザーにメールを送信した場合、私の送信時刻と別の国に住んでいる人が彼の印刷されたローカルでメールを受信する場合、gmail でさえも、各ユーザーの完璧な投稿時間を表示する方法よりも、サーバーに従って日時を保存している場合を意味します。どうすればこれができるかということです。申し訳ありませんが、この例を完璧に説明することはできません。

facebook: インドのユーザーの投稿、8 分前、9 分前に投稿された facebook ショー、実際の日付が表示された後は問題ありません。私が投稿した時間によると、その日付は完璧ですが、米国の人が更新した場合は、8 分前と言ってください。彼のプロフィールでは 9 分前ですが、彼の元の投稿時間は正しく表示されており、私にも正しく表示されていますか?

この質問で申し訳ありませんが、これはこの日付/時刻の概念を理解するのに役立ち、将来のユーザーにも役立ちます. ありがとうございました!

4

2 に答える 2

4

要するに、すべてをUTCに保存する必要があります

特定のユーザーの時間を表示するときは、ユーザーが選択したタイムゾーンを使用してください。「アジア/カルカッタ」のようにユーザーのタイムゾーンを保存し、date_default_timezone_setメソッドを使用して表示するときに単純に時間を変換します。

ここのコメントからあなたの質問に答えようとします。

常にすべてを UTC に保存します。それがベースラインです。ユーザーに基づいて変換したものに関連付けられた時間を表示する場合。8 分前に投稿されたものを表示したい場合は、現在の UTC 時間と投稿に関連付けられた UTC 時間の間のデルタを取得しています。ユーザー A (インド) からユーザー B (米国ロサンゼルス) にメッセージを送信する場合、メッセージの時刻を UTC で保存します。ユーザー A が表示している場合、時間は「Asia/Calcutta」に変換され、ユーザー B が表示している場合、時間は「America/Los_Angeles」に変換されます。UTC を使用すると、生活がずっと楽になります。私を信じて。

于 2012-09-04T04:50:18.567 に答える
1

MySQL Server Time Zone Supportで説明されているように:

現在のセッションのタイム ゾーン設定は、ゾーンに依存する時間値の表示と保存に影響します。NOW()これには、やなどの関数によって表示されるCURTIME()値、および列に格納され、列から取得される値が含まれTIMESTAMPます。列の値はTIMESTAMP、現在のタイム ゾーンから UTC に変換されて保存され、UTC から現在のタイム ゾーンに変換されて取得されます。

したがって、タイプ列を使用する場合TIMESTAMP、MySQL はタイムゾーン変換を自動的に処理しtime_zoneます。変数にセッションの適切なタイムゾーンを設定するだけです。

于 2012-09-04T04:42:53.587 に答える