Moment: isoWeekday (String) inconsistente com isoWeekday (Number) no domingo

Criado em 28 out. 2015  ·  6Comentários  ·  Fonte: moment/moment

isoWeekday (7) me dá o domingo desta semana iso (segunda a domingo)
isoWeekday ("Sunday") me dá o domingo da semana iso anterior

screen shot 2015-10-28 at 07 53 49

versão: https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js

Bug Documentation Up-For-Grabs

Comentários muito úteis

Achei que é assim que está implementado e entendo o que você quer dizer agora, mas o resultado foi um pouco contra-intuitivo do meu ponto de vista. A documentação diz:

_Obta ou define o dia ISO da semana, sendo 1 segunda-feira e 7 domingo._
moment().isoWeekday(1); // Monday
moment().isoWeekday(7); // Sunday

Portanto, em uma semana ISO, 7 é sempre o domingo. A documentação do alias diz:

_A partir de 2.1.0, um nome de dia também é compatível. Isso é analisado no local atual do momento._
moment().day("Sunday");

Portanto, com essas duas informações, pode ser um pouco confuso quando você faz:

moment().isoWeekday("Sunday")

Eu esperaria que ele desse o mesmo resultado que moment().isoWeekday(7) .

Além disso, se você disser que "domingo" é um alias para 0, isso pode entrar em conflito com a documentação aqui:

_Se o local atribuir segunda-feira como o primeiro dia da semana, moment().weekday(0) será segunda-feira. Se domingo for o primeiro dia da semana, moment().weekday(0) será domingo._

Não estou tentando me gabar, apenas quero explicar por que isso não estava claro para mim. Talvez uma nota na documentação afirmando que "domingo" é um apelido para 0 seja útil.

Todos 6 comentários

Está correto. Este domingo é isoWeekday(0) e "Domingo" é um apelido para 0, não 7.

Achei que é assim que está implementado e entendo o que você quer dizer agora, mas o resultado foi um pouco contra-intuitivo do meu ponto de vista. A documentação diz:

_Obta ou define o dia ISO da semana, sendo 1 segunda-feira e 7 domingo._
moment().isoWeekday(1); // Monday
moment().isoWeekday(7); // Sunday

Portanto, em uma semana ISO, 7 é sempre o domingo. A documentação do alias diz:

_A partir de 2.1.0, um nome de dia também é compatível. Isso é analisado no local atual do momento._
moment().day("Sunday");

Portanto, com essas duas informações, pode ser um pouco confuso quando você faz:

moment().isoWeekday("Sunday")

Eu esperaria que ele desse o mesmo resultado que moment().isoWeekday(7) .

Além disso, se você disser que "domingo" é um alias para 0, isso pode entrar em conflito com a documentação aqui:

_Se o local atribuir segunda-feira como o primeiro dia da semana, moment().weekday(0) será segunda-feira. Se domingo for o primeiro dia da semana, moment().weekday(0) será domingo._

Não estou tentando me gabar, apenas quero explicar por que isso não estava claro para mim. Talvez uma nota na documentação afirmando que "domingo" é um apelido para 0 seja útil.

Ponto justo. Pode ser que seja um alias para 7 ou que 0 vs 7 deva se comportar de maneira diferente. Não estou imerso o suficiente nos detalhes para ter certeza de qual é a coisa certa a fazer, então vou deixar isso em aberto.

Dando uma olhada nisso novamente. Os documentos apenas falam sobre ser capaz de passar "Sunday" em relação à função day , não weekday ou isoWeekday . Eles provavelmente devem ser atualizados.

Então, eu concordaria que para isoWeekday , o "Sunday" alias deve ser alterado para corresponder a 7 , não 0 . Que atualmente corresponda a 0 é um bug, já que esse é o ponto principal da função isoWeekday .

Um PR seria bem-vindo. Primeiro, envie um PR para corrigir o comportamento da função isoWeekday . Em seguida, envie um PR separado para https://github.com/moment/momentjs.com com a alteração da documentação.

Estou tentando gerar a data por meio do número do ano, da semana e do dia, ou seja, let date = moment().year(2019).isoWeek(1).isoWeekday(1).toDate(); //Mon Dec 31 2018 11:56:45 GMT+0100 (Central European Standard Time)

o problema que estou enfrentando quando desejo obter o ano e a semana a partir da data de geração moment(date).year() | moment(date).isoWeek() Eu entendi errado. NÃO TENHO CERTEZA DE COMO RESOLVER ISSO

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

danieljsinclair picture danieljsinclair  ·  3Comentários

benhathaway picture benhathaway  ·  3Comentários

Shoroh picture Shoroh  ·  3Comentários

M-Zuber picture M-Zuber  ·  3Comentários

paulyoung picture paulyoung  ·  3Comentários