2017-10-30 10 views
0

私は、バックエンドAPIがLaravel上に構築され、フロントエンドがReactJS上で開発されるプロジェクトに取り組んでいます。だから私の質問は、バックエンドからフロントエンドまで日時を共有する最良の方法は何でしょうか?それは宝くじアプリと宝くじのカウントダウンは、コンピュータに設定された日時にかかわらず、常にすべてのユーザーに同じ時刻を表示する必要があるため、日付と時刻は本当に重要です。また、私は時間に依存してデータのフィルタリングをいくつか行っています。バックエンドとフロントエンドの日付、時間を統合する最も良い方法は何ですか?

私が考えていた解決策は、現在のサーバーの日付と時刻のエンドポイントを作成することです。また、Reactフェッチの宝くじがサーバー上の現在の時刻もフェッチするたびに終了します。しかし、私はそれが良い解決策だとは思わない、誰かがより良い提案をすることができますか?

+0

ReactJSにはどのような関係がありますか? – hawk

答えて

0

クライアントとサーバーの両方は、ネットワーククロックで独自の時刻同期を行う必要があります。しかし、サーバーは、偽装される可能性があるため、クライアントに記録された時間を無視する必要があります。

時刻は、サーバー上で受信されたときにデータに記録する必要があります。そうすれば、クライアントとサーバーの間の時間同期については決して問題はありません。時間は通常、UTC時間でDBに記録され、次にクライアントでオフセットされます。 Laravelコードのサーバーサイドレンダリングでは、データを要求するフロントエンドのタイムゾーンを考慮する必要があります。

+0

あなたの答えをありがとうが、私は完全に理解していない、あなたの提案はNTPを使用していますか?多分あなたは例を示すことができますか? @Mikkel –

+0

デスクトップとサーバーの両方がNTPを使用するように設定されている必要があります(設定が正しいと仮定して)。私が言っていることは、サーバーを時代の唯一のアービターにすることです。したがって、タイムスタンプは、クライアントではなくサーバ上で割り当てられるべきです。これにより、クライアントマシン上でわずかに異なる時間に挑戦する必要がなくなります – Mikkel

0

日付をUTCのタイムスタンプ(番号)またはUTCの日付(バックエンドの日付/日時)として保存します。 Javascriptでは、UTCのタイムスタンプは現地時間に変換されます。または、ログインしたユーザー設定に基づいてタイムゾーンを表示する必要がある場合は、瞬時のようなものを使用できます。

クライアントから何かを作成する必要がある場合に備えて、タイムコードを返すdate.getTime()を使用して、任意の日付をクライアントからUTCに変換できます。

最終的に、DBに日付をUTCとして保存することが重要です!

関連する問題