Dokumenty te wspominają moment.ISO_8601
o opcji formatowania (od 2.7.0 - http://momentjs.com/docs/#/parsing/special-formats/ ), ale żadna z tych nie działa (nawet 2.7.0):
var date = moment();
date.format(moment.ISO_8601); // error
moment.format(date, moment.ISO_8601); // error
( http://jsfiddle.net/b3d6uy05/1/ )
Jak mogę uzyskać ISO 8601 z moment.js?
javascript
momentjs
date-formatting
iso8601
sennett
źródło
źródło
moment().toISOString()
Odpowiedzi:
http://momentjs.com/docs/#/displaying/as-iso-string/
Aktualizacja Na podstawie odpowiedzi: autorstwa @sennet i komentarza @dvlsg (patrz Fiddle ) należy zauważyć, że istnieje różnica między
format
itoISOString
. Oba są poprawne, ale podstawowy proces różni się.toISOString
konwertuje na obiekt Date, ustawia na UTC, a następnie używa natywnej funkcji prototypowej Date do wyprowadzania ISO8601 w UTC z milisekundami (YYYY-MM-DD[T]HH:mm:ss.SSS[Z]
). Z drugiej stronyformat
używa domyślnego formatu (YYYY-MM-DDTHH:mm:ssZ
) bez milisekund i zachowuje przesunięcie strefy czasowej.Otworzyłem problem, ponieważ moim zdaniem może on prowadzić do nieoczekiwanych rezultatów.
źródło
moment().utc().format("OUTPUT_FORMAT")
moment().toISOString(true);
.Użyj
format
bez parametrów:( http://jsfiddle.net/8gvhL1dz/ )
źródło
date.toISOString()
zachowa milisekundy i użyje utc,date.format()
upuści milisekundy i użyje twojej lokalnej strefy czasowej (a przynajmniej takie zachowanie obecnie dostaję w chrome - jsfiddle.net/8gvhL1dz/22 )Możliwe także z waniliowym JS
źródło
Kiedy używasz Mongoose do przechowywania dat w MongoDB, musisz użyć toISOString (), ponieważ wszystkie daty są przechowywane jako daty ISO z milisekundami.
źródło
Jeśli chcesz tylko część daty (np. 2017-06-27) i chcesz, aby działała niezależnie od strefy czasowej, a także w języku arabskim, oto kod, który napisałem:
źródło
źródło