web-dev-qa-db-ja.com

moment.jsライブラリを使用してタイムゾーンリストを取得するにはどうすればよいですか?

すべての実際の世界のタイムゾーンの<select>リストを作成する必要があります。タイムゾーンリスト付きの配列を取得するにはどうすればよいですか?

34
user619271

タイムゾーンの場合、自分で作成したタイムゾーンJSファイルを手動で追加する必要があります。

この page では、最初にmoment.jsをロードした後、ゾーンを選択して、ロードするファイルを生成できます。

このようなものがあるはずです、見てみましょう:

<script src="/javascripts/modules/moment/moment-with-langs.min.js"></script>
<script src="/javascripts/modules/moment/moment-timezone.min.js"></script>
<script src="/javascripts/modules/moment/moment-timezone-data.js"></script>

JS moment-timezone-data.jsは、タイムゾーンのカスタムリストです。

ただし、現時点では、MomentJSはすべてのタイムゾーンのリストを返しません。タイムゾーンも変更できるためです。 selectタグを追加する必要がある場合は、上記のリンクからタイムゾーンリストを手動で解析することをお勧めします。

3
Ito

最初に_moment-timezone_をデータに含めてから、moment.tz.names();を使用できます

40
marcieng
var timeZones = moment.tz.names();

http://momentjs.com/timezone/docs/#/data-loading/getting-zone-names/ を参照してください

18
jkabugu

Moment.jsにはデフォルトでmoment-timezone.jsが付属していないことに注意してください。入手する必要があります。

bower install moment-timezone --save
npm install moment-timezone --save
Install-Package Moment.Timezone.js

または ダウンロード

次に、この方法でタイムゾーンの配列を要求できます:

var timezones = moment.tz.names();

もう1つの便利なトリックは、現在のユーザーのタイムゾーンを設定(推測)できるため、ユーザーが巨大なリストで自分のタイムゾーンを探す必要がないか、デフォルトでタイムゾーンを設定してからユーザーに変更させることができることです。彼がそれを必要とするなら。

var currentUserTimezone = moment.tz.guess();

また、タイムゾーンの省略形を提供する必要がある場合に、必要に応じてタイムゾーンの省略形を取得できます。

moment.tz('America/Los_Angeles').format('z') //PDT

moment-timezone.jsの完全なドキュメント

8
Carlos B

378のタイムゾーンがあります。タイムゾーンとは、インディアナ州の2つの夏時間をオフにすることを決定したインディアナ州の個々の町など、どんな場所でも、あらゆる場所で有効であったDSTなどの時間に関するルールの組み合わせです。 1940年代。または、より最近の例として、北朝鮮のタイムゾーンを取り上げます。これは、30分だけ上に移動されました。または、南極大陸専用の12のタイムゾーン。

これらすべてのタイムゾーンをプルダウンに表示したいかどうかは疑問です。最も一般的な50-100程度を選択する必要があります。それは自分で行うことも、Googleなどのサイトからリストをコピーすることもできます。 24のオフセットのそれぞれから少なくとも1つのタイムゾーンを選択することをお勧めします。そのため、人がどこにいても、そのような一致を見つけることができます。

4
user663031

Include moment-timezone.js cdnから。

次に、_moment.tz._names_を使用して、タイムゾーンをオブジェクトとして取得します。メソッドmoment.tz.names()もタイムゾーンを配列として提供しますが、速度は遅くなります。

0.4.0より前のバージョンでは、_moment.tz._names_オブジェクトがないため、moment.tz.names()メソッドを使用する必要があります。

2
Vignesh Raja