2014-06-12 7 views
13

Próbowałem użyć formatu z lub zz w celu wyświetlenia strefy czasowej na końcu łańcucha i okazało się, że jest przestarzałe. Z i ZZ pracują, aby wyświetlić -0700, ale zamiast tego chcę, żeby pokazywał PDT.Użycie skryptu Moment.js do wyświetlenia skrótu strefy lokalnej użytkowników:

Mam chwila czasowa i plik danych, ale nie mogę dowiedzieć się, jak go używać, aby określić strefę czasową klienta i wyświetlić coś takiego:

2014-05-30T22: 56: 23,967 PDT

zamiast:

2014-05-30T22: 56: 23,967

Czy jest możliwe aby użyć chwila strefę czasową, aby określić EST CST ... MST PST?

+0

moje rozumienie (bardzo minimalne) [* dokumentacja *] (http://momentjs.com/timezone/docs/) jest to, że jest on używany do ustawienia strefy czasowej ciąg wyjściowy, nie formatowania napisu np 'm.tz (" America/Toronto "). format(); // "2013-11-18T11: 55: 00-05: 00" '. Istnieje wiele narzędzi (https://bitbucket.org/pellepim/jstimezonedetect), które próbują odgadnąć strefę czasową użytkowników w oparciu o przesunięcie strefy czasowej i czy obserwuje się zmianę czasu letniego. Wydaje się jednak, że działają one przy użyciu wartości [* IANA timezone *] (http://www.iana.org/time-zones), a nie "cywilnych" (niejednoznacznych) wartości, takich jak EST. – RobG

Odpowiedz

24

Według stanu z chwili czasowej 0.1.0, można użyć formatting additions uzyskać skrót określonej strefy czas:

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

Począwszy od wersji 0.5.0, można teraz guess the user's local time zone, który w połączeniu z powyższą techniką, pozwala na wykonanie następujących czynności:

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

Zakładając, że przypuszczenie było prawidłowe, wyświetli skojarzony skrót.

+0

"z" i "zz" są obecnie amortyzowane. jak możemy uzyskać strefę czasową w krótkim formacie? – mperle

+0

@mperle - Nadal można z nich korzystać, ale tylko z chwilową strefą czasową. –

0

Prawdopodobnie nie jest to dobra droga, ale nie chciałem dodawać żadnych dodatkowych skryptów do mojego projektu dla lokalnej strefy czasowej, więc zbadałem obiekt chwilowy i otrzymałem lokalną strefę czasową za pomocą kodu, który napisałem poniżej:

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

Nie powinieneś używać '_d', ale raczej' .toDate() ', ale nadal nie jest to zalecane, ponieważ wyjście' toString' jest specyficzne dla implementacji i nie ma gwarancji, że zostanie sformatowane w jakiś szczególny sposób. W praktyce dane dotyczące strefy czasowej są czasami skracane, czasem rozszerzane, czasem nieobecne. –