2

こんにちは、stackoverflow コミュニティです。

私は Web アプリを開発しています。コンセプトは、過去の時系列に基づいて過去の為替レートを表示することです。

たとえば、ユーザーは 2020 年 5 月 22 日 13:00 から 2020 年 5 月 26 日 22:00 までの為替レートをリクエストできます。次に、バックエンドがループを実行し、1 時間ごとに 2 つの日時の間のレートを取得します。

GMT タイム ゾーンで保存されたデータベース内のすべての料金。

そして、ここに問題があります。ユーザーがタイム ゾーン オフセット +10:00 からリクエストを行ったとします。したがって、このユーザーが最終日時を 2020 年 5 月 26 日 22:00 として選択した場合、データベースから 2020 年 5 月 26 日 12:00 のレートを取得して、10 時間を減算する必要があると思います。

これはばかげているように聞こえるかもしれませんが、私はこれで立ち往生しています。

私の論理は何ですか:

a)フロントエンドでJavaScriptを介してユーザーのタイムゾーンオフセットを取得します

var get_timezone_offset = new Date().getTimezoneOffset();

var hrs = parseInt(-(timezone_offset / 60));

var mins = Math.abs(timezone_offset % 60);

var timezone_offset = hrs + ':' + mins;

b) ユーザーのタイム ゾーン オフセットをバックエンドに送信する

c) データベースからレートを取得し、保存されている日付を GMT からユーザーのタイム ゾーン オフセットに PHP の Datetime オブジェクトを介して変換します

$date = new \DateTime('2020-05-26 22:00');

$date->modify(-10 hours);

$date->format('Y-m-d H:i:s');

これは正しいですか?ユーザーに間違った料金を表示しません。

前もって感謝します

4

1 に答える 1