web-dev-qa-db-ja.com

Moment.jsを使用してユーザーのローカルゾーンの省略形を表示する

文字列の最後のタイムゾーンを表示するためにフォーマットでzまたはzzを使用しようとしましたが、それが非推奨であることがわかりました。 ZおよびZZは-0700を表示するように機能しますが、代わりにPDTを表示します。

Moment-timezoneとデータファイルを取得しましたが、それを使用してクライアントのローカルタイムゾーンを特定し、次のようなものを表示する方法を理解できません。

2014-05-30T22:56:23.967 PDT

の代わりに:

2014-05-30T22:56:23.967

EST CST ... MST PSTを決定するためにモーメントタイムゾーンを使用することは可能ですか?

15
HypeXR

Moment-timezone 0.1.0以降は、 フォーマットの追加 を使用して、固有のタイムゾーンの省略形を取得できます。

moment().tz("America/Los_Angeles").format('z');  // PST or PDT

バージョン0.5.0の時点で ユーザーのlocalタイムゾーン を推測できるようになりました。上記の手法と組み合わせると、次のことができます。

moment().tz(moment.tz.guess()).format('z');

推測が正しいと仮定すると、関連する略語が表示されます。

29

おそらくこれは良い方法ではありませんが、プロジェクトにローカルタイムゾーンのスクリプトを追加したくなかったので、モーメントオブジェクトを調査し、以下に記述したコードでローカルタイムゾーンを取得します。

 var test = momentUpdateDate._d.toString().substring(test.indexOf('(')+1, test.indexOf(')'));
0
user3459287

2020年更新

過去5年間で、これは機能しなくなりました。今試してください:

var timeZone = moment.tz.guess();
var time = new Date();
var timeZoneOffset = time.getTimezoneOffset();
moment.tz.zone(timeZone).abbr(timeZoneOffset);
0

最新の moment timezone docs から

moment.tz(String).format("Z z"); // -08:00 PST
moment.tz(String).zoneAbbr();    // PST
moment.tz(String).zoneName();    // PST

いくつかの例:

moment.tz(moment.tz.guess()).zoneAbbr(); // PST
moment.tz("America/New_York").zoneAbbr(); // EST
0
jjbskir