1

この方法を使用してこの問題を解決しました:

php.ini のタイムゾーンを UTC に設定します

次に、javascript new Date() を使用してそれを変換し、クライアントの同等の時間を取得します。

しかし、この方法の重大な欠点は、クライアントがシステムのタイムゾーンまたはシステムの時間を変更すると、変更されることです。Javascript は OS の時間とタイムゾーンを使用して計算をサーバーに送信しますが、これも同じ問題に悩まされています。つまり、クライアントがあなたを欺く可能性があります。一方、Facebook の誕生日は、クライアントが時間やタイムゾーンを変更しても影響を受けないこともわかりました。

私の場合、今日の誕生日を表示するためのソリューションが現在必要です。サーバーとクライアントのタイムゾーンの違いによるものです。私はphpでタイムゾーンとしてUTCを設定しており、私はインドにいるので、誕生日は朝の5:30に変わります。私はそのアプローチの問題点を指摘してみました。

上記のバグのない解決策を提案してください。

4

2 に答える 2

3

このようなものを試してみてください...

誕生日の絶対時刻を送信する代わりに、今からの相対時刻を送信します

つまり、サーバーに「誕生日は 5 月 18 日の 12:00 です」と言わせないでください。代わりに、「誕生日は今から 80 時間 20 分後です」と言ってもらいます。

このように、クライアントが今が何時であるかは問題ではありません。時計が通常の速さで刻々と進んでいる限り、誕生日が「今日」または「2 時間後」などであることがわかります。

ネットワークを介して時差を送信すると、精度が少し失われますが、大したことではなく、約 1 秒以下である必要があります。

于 2012-05-15T19:25:49.787 に答える
0

多くの Web サイトには、ユーザーのプロフィールに「タイムゾーン」フィールドがあります。シンプルですが、うまくいきます。

Facebookにはそれがあるか、ユーザーの場所に基づいて機能すると思います。

于 2012-05-15T19:08:49.257 に答える