2016-11-01 4 views
8

Как это:Формат метки времени в соответствии с RFC 3339 с moment.js

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

мне нужно метку времени, чтобы иметь «Z» в конце. Есть ли лучший способ, чем просто +'Z'?

Он должен совпадать с кодом питона на внутреннем интерфейсе:

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

Почему вы не можете просто использовать [ 'формат()'] (http://momentjs.com/docs/#/displaying/format/)? Как говорится в документах: _В версии ** 1.5.0 **, при вызове 'moment # format' без формата будет по умолчанию' moment.defaultFormat'. В поле «момент.defaultFormat» находится формат ISO8601 «YYYY-MM-DDTHH: mm: ssZ.'. Начиная с версии ** 2.13.0 **, когда в режиме UTC формат по умолчанию возвращает 'Z' в качестве смещения вместо' +00: 00'_ – VincenzoC

+0

Работает ли он для вас? Я все еще получаю '+00: 00'. 'moment.version'" 2.7.0 "' moment.utc(). Format() '" 2016-11-01T22: 35: 42 + 00: 00 ". Документы говорят, что я нахожусь в режиме UTC при вызове '.utc()'. Поэтому я бы предположил, что это работает. – kev

+1

Обратите внимание, что в документах указано, что у вас будет 'Z' вместо' +00: 00', начиная с версии ** 2.13.0 **, вы используете ** 2.7.0 **, который является предыдущим. – VincenzoC

ответ

8

Вы можете просто использовать format().

Как Docs говорит:

В версии 1.5.0 , называя moment#format без формата по умолчанию будет moment.defaultFormat. Из таблицы moment.defaultFormat - это формат ISO8601 YYYY-MM-DDTHH:mm:ssZ.

В версии 2.13.0, когда в режиме UTC, формат по умолчанию будет возвращать Z как смещение, вместо +00:00

+0

> Начиная с версии 2.13.0, когда в режиме UTC формат по умолчанию возвращает Z как смещение, а не +00: 00 Интересно, что я получил '+00: 00', когда использовал формат() 'на сервере UTC (Heroku) и API календаря Google, который соответствует требованиям RFC 3339, возвратил ошибку и работал только с смещением' Z' Использование версии momentjs 2.20 –

+0

@PetrGazarov учтите, что [_UTC mode _] (http : //momentjs.com/docs/#/parsing/utc/) зависит от способа создания моментального объекта, а не от смещения среды. 'moment(). format()' будет печатать '+00: 00' на сервере UTC, а' moment.utc(). format() 'будет иметь' Z'. Для получения дополнительной информации см. ['Local()'] (http://momentjs.com/docs/#/manipulating/local/) и ['utc()'] (http://momentjs.com/docs/#/ манипулирование/UTC /). – VincenzoC

+0

Спасибо за разъяснение, @VincenzoC –

3

Я думаю, что функция toISOString() делает то, что вам нужно, не так ли? См. documentation here.

+3

К сожалению, мне нужен TS без миллисекунд. – kev