2016-11-01 23 views
8

Jak to:Format znacznika czasu zgodnie z RFC 3339 z moment.js

const RFC_3339 = 'YYYY-MM-DDTHH:mm:ss'; 
moment.utc().format(RFC_3339); 

muszę znacznik czasu, aby mieć 'Z' na końcu. Czy istnieje lepszy sposób niż tylko +'Z'?

Należy dopasować kod Pythona na backend:

RFC_3339_FMT = "%Y-%m-%dT%H:%M:%SZ" 
+1

Dlaczego nie można po prostu użyć [ 'format()'] (http://momentjs.com/docs/#/displaying/format/)? Jak mówią docs: _ Jako wersji ** 1.5.0 **, wywołanie 'momentu # formatu' bez formatu spowoduje ustawienie domyślne' moment.defaultFormat'. Po wyjęciu z pudełka "moment.defaultFormat" to format ISO8601 "RRRR-MM-DDTHH: mm: ssZ.". Od wersji ** 2.13.0 **, gdy w trybie UTC, domyślny format zwróci 'Z' jako przesunięcie, zamiast' +00: 00'_ – VincenzoC

+0

Czy to działa? Nadal otrzymuję '+00: 00'. 'moment.version'" 2.7.0 "' moment.utc(). Format() '" 2016-11-01T22: 35: 42 + 00: 00 ". Dokumenty mówią, że jestem w trybie UTC, gdy dzwonię do '.utc()'. Zakładam, że to działa. – kev

+1

Należy zauważyć, że dokumenty mówią, że będziesz miał 'Z' zamiast' +00: 00' począwszy od wersji ** 2.13.0 **, używasz ** 2.7.0 **, który był poprzedni. – VincenzoC

Odpowiedz

8

Możesz po prostu użyć format().

Jak docs mówi:

Począwszy od wersji 1.5.0 , nazywając moment#format bez formacie domyślnie moment.defaultFormat. Po wyjęciu z pudełka, moment.defaultFormat jest w formacie ISO8601 YYYY-MM-DDTHH:mm:ssZ.

W wersji 2.13.0, w trybie UTC, domyślnym formatem powróci Z jak offset, zamiast +00:00

+0

> Od wersji 2.13.0, w trybie UTC, domyślny format zwróci Z jako offset, zamiast +00: 00 Co ciekawe, mam '+00: 00' kiedy użyłem' format() 'na serwerze UTC (Heroku) i interfejsie API kalendarza Google, który jest zgodny z RFC 3339, zwróciło błąd i działało tylko z' Z' offsetem Używając funkcji instantjs wersja 2.20 –

+0

@PetrGazarov zwróć uwagę, że [tryb _UTC _] (http : //momentjs.com/docs/#/parsing/utc/) zależy od sposobu tworzenia obiektu momentu, a nie od przesunięcia środowiska. 'moment(). format()' wypisze '+00: 00' na serwerze UTC, podczas gdy' moment.utc(). format() 'będzie miał' Z'. Aby uzyskać więcej informacji, zobacz ['local()'] (http://momentjs.com/docs/#/manipulating/local/) i ['utc()'] (http://momentjs.com/docs/#/ manipulowanie/utc /). – VincenzoC

+0

Dzięki za wyjaśnienie, @VincenzoC –

3

myślę, że funkcja toISOString() robi to, co trzeba, prawda? Zobacz documentation here.

+3

Niestety potrzebuję TS bez milisekund. – kev

Powiązane problemy