0

過去に発生したイベントのリストを表示するために、Handlebars と共に FormatJS ライブラリを使用しています。サーバーの REST API でエンドポイントを呼び出しています。これは、Json でイベントのリストを返し、各イベントの日時を表示します。ATM GMTタイムゾーンを使用して日時をDBに保存しています。

したがって、Jsonを取得しているときは、次のように日時を処理しています:

{{formatRelative commentDate}}

私の問題は、日時が GMT でストックされているため、そのように表示されることです。たとえば、私は GMT+2 タイムゾーンを使用しているため、新しいイベントが作成されてリストに表示されるとすぐに、「数秒前」のはずなのに「2 時間前に発生」と表示されます。

それで、これを処理できる方法はありますか?DB の GMT で日時を保存するのを間違えていますか? もしそうなら、異なるタイムゾーンからの日時をどのように処理し、他のタイムゾーンの人々に表示しますか?

もちろん、formatRelativeヘルパーをカスタマイズして操作し、必要な結果を得ることができgetTimezoneOffsetましたが、他にもっと良い方法があるかどうかを知りたいと思っていました。

ありがとうございます!

4

1 に答える 1

2

あなたの質問を理解するための鍵は、あなたがコメントに書いたことです:

フォーマットの日時を含む Json を取得します2016-02-28 10:15:53- それは UTC 時間です

JSON の値が、UTC を示す適切なオフセットまたはZ文字を 含め、完全な ISO8601 形式であることを確認する必要があります。2016-02-28T10:15:53Z

オフセットがない場合、ほとんどの実装では値が現地時間で表されると見なされ、結果が説明されます。

したがって、問題は JavaScript コードではなく、サーバー側のコードにあります。日付文字列が JSON から解析されるときに適用できるクライアント側の回避策があるかもしれませんが、実際の最善の解決策は、サーバーで修飾することです。

于 2016-02-28T17:23:33.423 に答える