7

ここで、webapp の処理時間の優れた概要を確認できます。ただし、以下のシナリオには明確に対応していません。UTC + 場所 (iana タイムゾーンの場所 - America/New_York) の日時に基づいて、Web アプリケーションで現地時間を取得する方法が必要でした。

次の計算を行うライブラリを探しています。Javascriptでネイティブに動作する場合、それも私の目的に合っています。

サーバーから、次の情報が取得されます

{
  dateTime: "2002-10-27T15:04:05Z" # Time in UTC, no TimeZone info
  userTimeZone: "America/New_York" # based on current user location
}

問題は、夏時間のオフセットを考慮して、場所 (ニューヨーク) の時間に変換する方法が見つからなかったことです。

データベースにタイムゾーンオフセットを保存しても問題が解決するかどうかはわかりません。ユーザーは地域を越えて同じデータを見る可能性があるためです。たとえば、イベントは東部ゾーン (EST/EDT) に属する場所で発生しましたが、太平洋ゾーンのユーザーは、場所 (午前 8 時から午後 5 時までの "America/Los_Angeles" - PST/PDT) に基づいてデータを照会できます。

Moment.jsを見ましたが、解決策が見つかりませんでした。

要約すると、UTC + IANA の場所での日付時刻の入力から、Web ブラウザーで特定の場所 (夏時間オフセットを考慮) の現地時間を取得する方法が必要です。

4

3 に答える 3

5

元の回答

MomentJS は優れたライブラリですが、解析に重点が置かれています。Olson データベースを javascript で実装するTimezoneJSが必要です。

あなたのユースケースは、ドキュメントで最初に説明されているものの 1 つです。

更新された回答

ここにリストされているように、JavaScript でタイム ゾーンの変換を行うための複数のライブラリがあります。この質問が最初に尋ねられたとき、私は TimezoneJS しか知りませんでした。

moment.js について尋ねたので、moment-timezoneプラグインを使用する必要があります。(これは、最初に質問したときには利用できませんでした。)

var x = // your object as written in the question

var m = moment(x.dateTime).tz(x.userTimeZone);

var s = m.format(); // or whatever you want to do
于 2013-01-23T16:41:20.040 に答える
2

MomentJS の優秀な人々は、Moment Timezone と呼ばれる別のライブラリを作成しました。これはまさにあなたが探しているものだと思います。具体的には:

var zone = moment.tz.zone('America/New_York');
zone.parse(Date.UTC(2012, 2, 19, 8, 30)); // 240
于 2014-09-03T01:26:09.760 に答える