2016-11-08 10 views
0

Javascriptを使用すると、ユーザーのデバイスに基づいてユーザーのタイムゾーン名(PDT、ESTなど)を取得する方法はありますか?Javascriptでタイムゾーン名(PDT、ESTなど)を取得するにはどうすればよいですか?

コードは、私が試した:

const timezone = jstz.determine() 
const userTimezone = timezone.name() 

しかし、私はなどの代わりにアメリカ/ニューヨークのPDT、EST、ユーザのタイムゾーンの名前を取り戻すしたいと思います。

+0

afaikこれはできません。ただし、 '(new Date).getTimezoneOffset()'でタイムゾーンオフセットを取得することができます。 – Christoph

+0

@Christophあなたは確かにそれは不可能ですか? –

+0

DateオブジェクトとRegExだけで実行できるはずです。 Date()のようなものmatch(/['\\(']...['\\)']/) – DottedT

答えて

1

アドオンでmoment.jsを使用すると、次のことができます。略語はライブラリによって提供されるデータにあるため、ブラウザまたはオペレーティングシステムに関係なく、結果は一貫しています。

例の結果は、米国太平洋時間帯に設定されたコンピュータから、次のとおりです。

var zone = moment.tz.guess();   // "America/Los_Angeles" 
var abbr = moment.tz(zone).format("z"); // either "PST" or "PDT", depending on when run 

免責

タイムゾーンの略語は、信頼性や一貫性がありません。 listsofthemが多数あり、中央標準時、キューバ標準時、中国標準時の「CST」など多くのあいまい性があります。一般的には、それらを使用しないでください。は決してであるべきです。

また、モーメントタイムゾーンの略語はIANA TZ Databaseに由来します。このデータの最近の版では、多くの「発明された」略語が代わりに数値オフセットに置き換えられました。たとえば、ユーザーのタイムゾーンがAsia/Vladivostokの場合、以前のバージョンのように"VLAT"を取得する代わりに、"+10"を取得します。これは、略語「VLAT」は、もともとデータを埋めるためにtzデータベースによって考案されたものであり、その地域の人物が実際に使用していないためです。略語は、他の言語略語が実際に使用される可能性のある地域であっても、常に英語で表示されます。

+0

ありがとう!試して答えを受け入れるだろう。あなたが気にしないなら、私はいくつか質問します。では、タイムゾーン名を表示する場合はどうしたらいいですか?「America/Los_Angeles」はもっと良いだろうか? –

+0

あなたが探しているデータは、英語で「東部標準時」のようなものになります。まだJavaScriptには素晴らしい答えはありませんが、これは[CLDR](http://cldr.unicode.org/)にあります。 [toLocaleString'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects)の 'timeZone'と' timeZoneName'オプションを使って、それをサポートするIntl API経由のアクセスがあります。/Date/toLocaleString)。しかし、これらはまだどこでも動作しません。 –

+0

もちろん、これはコンテキストに大きく依存します。略語はあなたの使用のために確かにOKかもしれません。か否か。あなたはあなたの使い方について何も言わなかった。 –

関連する問題