Moment: isoWeekday(String) incohérent avec isoWeekday(Number) le dimanche

Créé le 28 oct. 2015  ·  6Commentaires  ·  Source: moment/moment

isoWeekday(7) me donne le dimanche de cette semaine iso (lundi-dimanche)
isoWeekday("Dimanche") me donne le dimanche de la semaine iso précédente

screen shot 2015-10-28 at 07 53 49

version : https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js

Bug Documentation Up-For-Grabs

Commentaire le plus utile

J'ai pensé que c'était comme ça que c'était mis en œuvre et je comprends ce que vous voulez dire maintenant, mais le résultat était un peu contre-intuitif de mon point de vue. La documentation dit :

_Obtient ou définit le jour ISO de la semaine, 1 étant le lundi et 7 étant le dimanche._
moment().isoWeekday(1); // Monday
moment().isoWeekday(7); // Sunday

Ainsi, dans une semaine ISO, 7 est toujours le dimanche. La documentation de l'alias dit :

_À partir de la version 2.1.0, un nom de jour est également pris en charge. Ceci est analysé dans la locale actuelle du moment._
moment().day("Sunday");

Donc, avec ces deux informations, cela peut être un peu déroutant lorsque vous le faites :

moment().isoWeekday("Sunday")

Je m'attendrais à ce qu'il donne le même résultat que moment().isoWeekday(7) .

En dehors de cela, si vous dites que "Dimanche" est un alias pour 0, cela pourrait entrer en conflit avec la documentation ici :

_Si les paramètres régionaux attribuent le lundi comme premier jour de la semaine, moment().weekday(0) sera le lundi. Si dimanche est le premier jour de la semaine, moment().weekday(0) sera dimanche._

Je n'essaie pas de me vanter, je veux juste expliquer pourquoi ce n'était pas clair pour moi. Peut-être qu'une note dans la documentation indiquant que "dimanche" est un alias pour 0 serait utile.

Tous les 6 commentaires

C'est correct. Ce dimanche est isoWeekday(0) et "Dimanche" est un alias pour 0, pas 7.

J'ai pensé que c'était comme ça que c'était mis en œuvre et je comprends ce que vous voulez dire maintenant, mais le résultat était un peu contre-intuitif de mon point de vue. La documentation dit :

_Obtient ou définit le jour ISO de la semaine, 1 étant le lundi et 7 étant le dimanche._
moment().isoWeekday(1); // Monday
moment().isoWeekday(7); // Sunday

Ainsi, dans une semaine ISO, 7 est toujours le dimanche. La documentation de l'alias dit :

_À partir de la version 2.1.0, un nom de jour est également pris en charge. Ceci est analysé dans la locale actuelle du moment._
moment().day("Sunday");

Donc, avec ces deux informations, cela peut être un peu déroutant lorsque vous le faites :

moment().isoWeekday("Sunday")

Je m'attendrais à ce qu'il donne le même résultat que moment().isoWeekday(7) .

En dehors de cela, si vous dites que "Dimanche" est un alias pour 0, cela pourrait entrer en conflit avec la documentation ici :

_Si les paramètres régionaux attribuent le lundi comme premier jour de la semaine, moment().weekday(0) sera le lundi. Si dimanche est le premier jour de la semaine, moment().weekday(0) sera dimanche._

Je n'essaie pas de me vanter, je veux juste expliquer pourquoi ce n'était pas clair pour moi. Peut-être qu'une note dans la documentation indiquant que "dimanche" est un alias pour 0 serait utile.

Point juste. Il se peut que ce soit un alias pour 7 ou que 0 vs 7 se comporte différemment. Je ne suis pas assez immergé dans les détails pour être sûr de la bonne chose à faire, alors je vais laisser cela ouvert.

Jetez un œil à cela à nouveau. Les docs ne parlent que de pouvoir passer "Sunday" en ce qui concerne la fonction day , pas weekday ou isoWeekday . Ils devraient probablement être mis à jour.

Ensuite, je conviendrais que pour isoWeekday , l'alias "Sunday" devrait être modifié pour correspondre à 7 , et non à 0 . Qu'il corresponde actuellement à 0 est un bug, puisque c'est tout l'intérêt de la fonction isoWeekday .

Un RP serait le bienvenu. Tout d'abord, soumettez un PR pour corriger le comportement de la fonction isoWeekday . Ensuite, soumettez un PR séparé à https://github.com/moment/momentjs.com avec le changement de documentation.

J'essaie de générer une date via le numéro de l'année, de la semaine et du jour, c'est- let date = moment().year(2019).isoWeek(1).isoWeekday(1).toDate(); //Mon Dec 31 2018 11:56:45 GMT+0100 (Central European Standard Time) dire

le problème auquel je suis confronté lorsque je veux obtenir l'année et la semaine à partir de la date de génération moment(date).year() | moment(date).isoWeek() Je me suis trompé. PAS SR DE COMMENT RÉSOUDRE CECI

Cette page vous a été utile?
0 / 5 - 0 notes