moment.js と moment-timezone.js を使用するときに、クライアントのタイムゾーンを取得して他のタイムゾーンに変換する最良の方法は何ですか?
クライアントのタイムゾーンを調べて、後で彼の日付と時刻を別のタイムゾーンに変換したいと考えています。
誰もこれを経験していますか?
moment.js と moment-timezone.js を使用するときに、クライアントのタイムゾーンを取得して他のタイムゾーンに変換する最良の方法は何ですか?
クライアントのタイムゾーンを調べて、後で彼の日付と時刻を別のタイムゾーンに変換したいと考えています。
誰もこれを経験していますか?
moment.js を使用する場合は、次を使用します。
var tz = moment.tz.guess();
America/Los_Angeles
米国太平洋時間帯などの IANA 時間帯識別子を返します。
ここに文書化されています。
内部的には、最初に次の呼び出しを使用してブラウザからタイム ゾーンを取得しようとします。
Intl.DateTimeFormat().resolvedOptions().timeZone
この機能をサポートする最新のブラウザーのみを対象としていて、他に Moment-Timezone が必要ない場合は、それを直接呼び出すことができます。
Moment-Timezone がその関数から有効な結果を得られない場合、またはその関数が存在しない場合、Date
オブジェクトに対していくつかの異なる日付と時刻をテストして動作を確認することにより、タイム ゾーンを「推測」します。通常、推測は十分な概算ですが、コンピューターのタイム ゾーン設定と正確に一致するとは限りません。
var timedifference = new Date().getTimezoneOffset();
これは、クライアントのタイムゾーンと UTC 時間の差を返します。その後、好きなようにそれをいじることができます。
次の JS コードを使用して、希望の時間を取得することもできます。
new Date(`${post.data.created_at} GMT+0200`)
この例では、受信した日付は GMT+0200 タイムゾーンでした。代わりに、すべてのタイムゾーンにすることができます。返されるデータはタイムゾーンの日付になります。これが誰でも時間を節約するのに役立つことを願っています
まず、次を使用してクライアントのタイムゾーンを見つけることができます
let zoneVal = moment().tz(Intl.DateTimeFormat().resolvedOptions().timeZone).format('Z')
お住まいの地域に応じて、+5:30 (コロンボ/スリランカ & デリー/インド) または +6:00 (ダッカ バングラデシュ) などの GMT ゾーン形式が返されます。
第二に、特定のタイムゾーンの時間を知りたい場合は、次のようにします
moment.tz("Asia/Dhaka").format()
これにより、ダッカの ISO 形式でタイム ゾーンの値が返されます。