Este problema parece ser causado por moment (). ToISOString () apresentado aqui:
http://momentjs.com/docs/#/displaying/as -iso-string /
momento (). toISOString ();
Eu poderia, mas no console se eu fizer:
n = moment.utc(new Date('2013-07-18T00:00:00+01:00'))
Ele retornará:
Thu Jul 18 2013 00:00:00 GMT+0100 (GMT Daylight Time)
Agora, se eu chamar toISOString ( ) nele, a data repentinamente torna-se 17:
n.toISOString()
o anterior retornará o dia 17 em vez de 18:
"2013-07-17T23:00:00.000Z"
Como você pode ver, toISOString
sempre exibe a hora em UTC (além de exibi-la de uma forma específica).
@ichernev , não entendi totalmente o seu ponto? Exibir de maneiras específicas significa que quando eu passar em 17º, devo chegar em 18º? Como passo em 18º e volto em 18º? obrigado.
Isso pode funcionar para você então:
> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSSZZ')
'2013-07-23T14:54:20.176-0700'
Ou
> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSS')
'2013-07-23T14:54:20.176'
Se você não se importa com o fuso horário e só deseja exibir a hora.
@ichernev , muito obrigado.
Você pode usar o parâmetro keepOffset de toISOString:
toISOString (keepOffset ?: boolean): string;
=>
momento (). toISOString (verdadeiro)
Isso está realmente certo?
moment('1970-01-01').toISOString()
saídas:
1969-12-31T23:00:00.000Z
Eu acho que a maioria das pessoas passando em uma data específica para um momento e formatando-o como um toISOString esperaria que a data não mudasse. Por que o padrão keepOffset não é verdadeiro se isso faz com que a função se comporte de maneira mais previsível?
Eu sei que alguns momentos estão sendo consistentes com a função nativa do JavaScript Date toISOString de acordo com ES2015, mas mesmo assim isso não parece um comportamento esperado.
Comentários muito úteis
Isso pode funcionar para você então:
Ou
Se você não se importa com o fuso horário e só deseja exibir a hora.