Эта проблема, по всей видимости, вызвана представленной здесь функцией moment (). ToISOString () :
http://momentjs.com/docs/#/displaying/as -iso-string /
момент (). toISOString ();
Я мог бы, но в консоли, если бы это сделал:
n = moment.utc(new Date('2013-07-18T00:00:00+01:00'))
Он вернет:
Thu Jul 18 2013 00:00:00 GMT+0100 (GMT Daylight Time)
Теперь, если я вызываю для него toISOString ( ), дата внезапно становится 17-й:
n.toISOString()
приведенное выше вернет 17-е вместо 18-го:
"2013-07-17T23:00:00.000Z"
Как видите, toISOString
всегда отображает время в формате UTC (помимо отображения его определенным образом).
@ichernev , я не совсем
Тогда это может сработать для вас:
> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSSZZ')
'2013-07-23T14:54:20.176-0700'
Или
> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSS')
'2013-07-23T14:54:20.176'
Если вас не волнует часовой пояс, и вы просто хотите отобразить время.
@ichernev , большое спасибо.
Вы можете использовать параметр keepOffset для toISOString:
toISOString (keepOffset ?: логическое): строка;
=>
момент (). toISOString (истина)
Это правда?
moment('1970-01-01').toISOString()
выходы:
1969-12-31T23:00:00.000Z
Я думаю, что большинство людей, которые передают конкретную дату в момент и форматируют ее как toISOString, ожидают, что дата не изменится. Почему для параметра keepOffset по умолчанию не установлено значение true, если это заставляет функцию вести себя более предсказуемым образом?
Я знаю, что момент согласован с встроенной функцией JavaScript Date toISOString согласно ES2015, но даже в этом случае это просто не похоже на ожидаемое поведение.
Самый полезный комментарий
Тогда это может сработать для вас:
Или
Если вас не волнует часовой пояс, и вы просто хотите отобразить время.