isoWeekday (7) me dá o domingo desta semana iso (segunda a domingo)
isoWeekday ("Sunday") me dá o domingo da semana iso anterior
versão: https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js
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
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:
Portanto, em uma semana ISO, 7 é sempre o domingo. A documentação do alias diz:
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.