Moment: isoWeekday (String) inconsistente con isoWeekday (Number) el domingo

Creado en 28 oct. 2015  ·  6Comentarios  ·  Fuente: moment/moment

isoWeekday (7) me da el domingo de esta semana iso (lunes a domingo)
isoWeekday ("domingo") me da el domingo de la semana iso anterior

screen shot 2015-10-28 at 07 53 49

versión: https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js

Bug Documentation Up-For-Grabs

Comentario más útil

Pensé que así es como se implementa y entiendo lo que quieres decir ahora, pero el resultado fue un poco contra-intuitivo desde mi punto de vista. La documentación dice:

_ Obtiene o establece el día ISO de la semana, siendo 1 el lunes y 7 el domingo.
moment().isoWeekday(1); // Monday
moment().isoWeekday(7); // Sunday

Entonces, en una semana ISO, 7 es siempre domingo. La documentación del alias dice:

_A partir de 2.1.0, también se admite un nombre de día. Esto se analiza en la configuración regional actual del momento.
moment().day("Sunday");

Entonces, con esos dos datos, puede ser un poco confuso cuando lo hace:

moment().isoWeekday("Sunday")

Esperaría que diera el mismo resultado que moment().isoWeekday(7) .

Aparte de eso, si dice que "Domingo" es un alias para 0, esto podría entrar en conflicto con la documentación aquí:

_Si la configuración regional asigna el lunes como el primer día de la semana, moment().weekday(0) será el lunes. Si el domingo es el primer día de la semana, moment().weekday(0) será el domingo.

No estoy tratando de presumir, solo quiero explicar por qué esto no estaba claro para mí. Quizás una nota en la documentación que indique que "domingo" es un alias para 0 sería útil.

Todos 6 comentarios

Eso es correcto. Este domingo es isoWeekday(0) y "Domingo" es un alias para 0, no 7.

Pensé que así es como se implementa y entiendo lo que quieres decir ahora, pero el resultado fue un poco contra-intuitivo desde mi punto de vista. La documentación dice:

_ Obtiene o establece el día ISO de la semana, siendo 1 el lunes y 7 el domingo.
moment().isoWeekday(1); // Monday
moment().isoWeekday(7); // Sunday

Entonces, en una semana ISO, 7 es siempre domingo. La documentación del alias dice:

_A partir de 2.1.0, también se admite un nombre de día. Esto se analiza en la configuración regional actual del momento.
moment().day("Sunday");

Entonces, con esos dos datos, puede ser un poco confuso cuando lo hace:

moment().isoWeekday("Sunday")

Esperaría que diera el mismo resultado que moment().isoWeekday(7) .

Aparte de eso, si dice que "Domingo" es un alias para 0, esto podría entrar en conflicto con la documentación aquí:

_Si la configuración regional asigna el lunes como el primer día de la semana, moment().weekday(0) será el lunes. Si el domingo es el primer día de la semana, moment().weekday(0) será el domingo.

No estoy tratando de presumir, solo quiero explicar por qué esto no estaba claro para mí. Quizás una nota en la documentación que indique que "domingo" es un alias para 0 sería útil.

Punto justo. Podría ser que debería ser un alias para 7 o que 0 vs 7 debería comportarse de manera diferente. No estoy lo suficientemente inmerso en los detalles como para estar seguro de qué es lo correcto, así que dejaré esto abierto.

Echando un vistazo a esto de nuevo. Los documentos solo hablan de poder pasar "Sunday" con respecto a la función day , no weekday o isoWeekday . Probablemente deberían actualizarse.

Entonces, estaría de acuerdo en que para isoWeekday , el alias de "Sunday" debe cambiarse para que coincida con 7 , no 0 . Que actualmente coincida con 0 es un error, ya que ese es el objetivo de la función isoWeekday .

Un PR sería bienvenido. Primero, envíe un PR para corregir el comportamiento de la función isoWeekday . Luego, envíe un PR separado a https://github.com/moment/momentjs.com con el cambio de documentación.

Estoy tratando de generar la fecha a través del año, la semana y el número de día, es decir, let date = moment().year(2019).isoWeek(1).isoWeekday(1).toDate(); //Mon Dec 31 2018 11:56:45 GMT+0100 (Central European Standard Time)

el problema al que me enfrento cuando quiero obtener el año y la semana desde la fecha generada moment(date).year() | moment(date).isoWeek() Me equivoqué. NO ESTÁ SEGURO DE CÓMO RESOLVER ESTO

¿Fue útil esta página
0 / 5 - 0 calificaciones