Executando o seguinte código no Chrome versão 49.0.2623.110 m
Talvez relacionado a #2982?
Como você está usando a função moment()
para construir sua data, moment assume que você está lidando com uma data local. Assim, a função .startOf()
está movendo você para o início de sua data local.
.toISOString()
, porém, gera uma data UTC, conforme indicado pelo Z no final das strings.
Com base no seu perfil do github, parece que você está em Israel. Então, ajustando o fuso horário da Ásia/Jerusalém e colocando tudo em código:
//the time now in Jerusalem
moment().format()
"2016-04-03T14:48:10+03:00"
//start of day in Jersualem
moment().startOf('day').format()
"2016-04-03T00:00:00+03:00"
//start of day as ISO string is three hours before start of day in Jerusalem
moment().startOf('day').toISOString()
"2016-04-02T21:00:00.000Z"
Você precisa trabalhar totalmente em horário local e usar .format()
para obter o resultado desejado ou trabalhar totalmente em UTC.
Esta seção dos documentos pode ser útil:
http://momentjs.com/guides/#/parsing/local -utc-zone/
:face-palm:
Obrigado pela explicação detalhada.
Acho que já expliquei isso pelo menos duas vezes esta semana entre aqui e o Stack Overflow. Você não é a única pessoa a ser confundida. Vou atualizar os documentos para deixar a parte UTC um pouco mais clara.
Comentários muito úteis
Como você está usando a função
moment()
para construir sua data, moment assume que você está lidando com uma data local. Assim, a função.startOf()
está movendo você para o início de sua data local..toISOString()
, porém, gera uma data UTC, conforme indicado pelo Z no final das strings.Com base no seu perfil do github, parece que você está em Israel. Então, ajustando o fuso horário da Ásia/Jerusalém e colocando tudo em código:
Você precisa trabalhar totalmente em horário local e usar
.format()
para obter o resultado desejado ou trabalhar totalmente em UTC.Esta seção dos documentos pode ser útil:
http://momentjs.com/guides/#/parsing/local -utc-zone/