Moment.js(moment-timezoneを使用)を使用して、現在のロケールのタイムゾーンの省略形(PSTなど)を取得します。
_var now = Date.now(); // 1423254073931
var zone = moment(now).zone(); // 480
var timezone =
_
タイムゾーンの省略形を取得するにはどうすればよいですか?ドキュメントや他の場所で見たすべての例では、_"America/New_York"
_のような特定の領域を選択しています。
ドキュメントから、_ Zone Object からzone.abbr(timestamp)
を使用して情報を取得できるようですが、ゾーンオブジェクトにアクセスする方法がわかりません。
タイトルと質問が異なります。タイトルでは、オフセットを使用してそれを取得する方法を尋ねます-これは不可能です。同じオフセットを共有する多くのタイムゾーンがあるため、タイムゾーンの省略形とオフセットのみを区別することはできません。
しかし、質問では、特定のタイムスタンプについて、現在のロケールの省略形を取得する方法を尋ねました。
一般的な問題は、現在のタイムゾーンを検出する完全に信頼できる方法がないことです。これについては this answer で説明します。そのため、moment-timezoneは、デフォルトでロードするタイムゾーンを決定論的に判断できません。
ただし、他にもいくつかのオプションがあります。
一部のブラウザでは、 ECMAScript Internationalization API 拡張機能がtoLocaleString
オブジェクトの Date
関数でサポートされています。サポートされている場合、これを(瞬間なしで)実行できます。
var d = new Date(); // or whatever date you have
var tzName = d.toLocaleString('en', {timeZoneName:'short'}).split(' ').pop();
サポートされているブラウザでは、「EST」のような値が表示されます。ただし、一部のブラウザでは機能しないため、何らかのテストを実行することをお勧めします。
jsTimeZoneDetect のようなスクリプトを使用して、ローカルタイムゾーンで推測できます。 通常は正しいですが、保証されていません。次に、その値をmoment-timezoneに渡すことができます。
var tzName = jstz.determine().name();
var m = moment();
var abbr = m.tz(tzName).zoneAbbr(); // or .format('z')
moment-timezone のタイムゾーン検出/推測の組み込みサポートもあります。
var tzName = moment.tz.guess();
var abbr = m.tz(tzName).zoneAbbr(); // or .format('z')
Moment.jsの最新ビルドは、タイムゾーンを推測します: PR#22 例:moment.tz.guess(); will result in 'America/New_York'