Moment: isoWeekday(String) stimmt nicht mit isoWeekday(Number) am Sonntag überein

Erstellt am 28. Okt. 2015  ·  6Kommentare  ·  Quelle: moment/moment

isoWeekday(7) gibt mir den Sonntag dieser iso-Woche (Montag-Sonntag)
isoWeekday("Sonntag") gibt mir den Sonntag der vorherigen iso-Woche

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

Hilfreichster Kommentar

Ich habe mir gedacht, dass es so implementiert ist und verstehe, was Sie jetzt meinen, aber das Ergebnis war aus meiner Sicht etwas kontraintuitiv. Die Dokumentation sagt:

_Ruft den ISO-Wochentag ab oder legt ihn fest, wobei 1 für Montag und 7 für Sonntag steht._
moment().isoWeekday(1); // Monday
moment().isoWeekday(7); // Sunday

In einer ISO-Woche ist 7 also immer Sonntag. In der Dokumentation des Alias ​​steht:

_Ab 2.1.0 wird auch ein Tagesname unterstützt. Dies wird im aktuellen Gebietsschema des Augenblicks geparst._
moment().day("Sunday");

Mit diesen beiden Informationen kann es also etwas verwirrend sein, wenn Sie dies tun:

moment().isoWeekday("Sunday")

Ich würde erwarten, dass es das gleiche Ergebnis wie moment().isoWeekday(7) .

Abgesehen davon, wenn Sie sagen, dass "Sonntag" ein Alias ​​für 0 ist, kann dies mit der Dokumentation hier in Konflikt geraten:

_Wenn das Gebietsschema Montag als ersten Tag der Woche zuweist, ist moment().weekday(0) Montag. Wenn Sonntag der erste Tag der Woche ist, ist moment().weekday(0) Sonntag._

Ich versuche nicht zu prahlen, möchte nur erklären, warum das für mich unklar war. Vielleicht wäre ein Hinweis in der Dokumentation nützlich, dass "Sonntag" ein Alias ​​für 0 ist.

Alle 6 Kommentare

Das ist richtig. Dieser Sonntag ist isoWeekday(0) und "Sonntag" ist ein Alias ​​für 0, nicht für 7.

Ich habe mir gedacht, dass es so implementiert ist und verstehe, was Sie jetzt meinen, aber das Ergebnis war aus meiner Sicht etwas kontraintuitiv. Die Dokumentation sagt:

_Ruft den ISO-Wochentag ab oder legt ihn fest, wobei 1 für Montag und 7 für Sonntag steht._
moment().isoWeekday(1); // Monday
moment().isoWeekday(7); // Sunday

In einer ISO-Woche ist 7 also immer Sonntag. In der Dokumentation des Alias ​​steht:

_Ab 2.1.0 wird auch ein Tagesname unterstützt. Dies wird im aktuellen Gebietsschema des Augenblicks geparst._
moment().day("Sunday");

Mit diesen beiden Informationen kann es also etwas verwirrend sein, wenn Sie dies tun:

moment().isoWeekday("Sunday")

Ich würde erwarten, dass es das gleiche Ergebnis wie moment().isoWeekday(7) .

Abgesehen davon, wenn Sie sagen, dass "Sonntag" ein Alias ​​für 0 ist, kann dies mit der Dokumentation hier in Konflikt geraten:

_Wenn das Gebietsschema Montag als ersten Tag der Woche zuweist, ist moment().weekday(0) Montag. Wenn Sonntag der erste Tag der Woche ist, ist moment().weekday(0) Sonntag._

Ich versuche nicht zu prahlen, möchte nur erklären, warum das für mich unklar war. Vielleicht wäre ein Hinweis in der Dokumentation nützlich, dass "Sonntag" ein Alias ​​für 0 ist.

Gutes Argument. Es könnte sein, dass es ein Alias ​​für 7 sein sollte oder dass sich 0 vs 7 anders verhalten sollte. Ich bin nicht tief genug in die Details eingetaucht, um sicher zu sein, was das Richtige ist, also lasse ich das einfach offen.

Schau dir das nochmal an. Die Dokumentation spricht nur davon, dass "Sunday" in Bezug auf die Funktion day kann, nicht weekday oder isoWeekday . Sie sollten wahrscheinlich aktualisiert werden.

Dann würde ich zustimmen, dass für isoWeekday der Alias "Sunday" so geändert werden sollte, dass er mit 7 und nicht mit 0 übereinstimmt. Dass es derzeit mit 0 übereinstimmt, ist ein Fehler, da das der ganze Sinn der Funktion isoWeekday ist.

Eine PR wäre wünschenswert. Senden Sie zunächst eine PR, um das Verhalten der Funktion isoWeekday korrigieren. Senden Sie dann eine separate PR mit der Dokumentationsänderung an https://github.com/moment/momentjs.com .

Ich versuche, ein Datum über Jahr, Woche und Tag zu generieren, dh let date = moment().year(2019).isoWeek(1).isoWeekday(1).toDate(); //Mon Dec 31 2018 11:56:45 GMT+0100 (Central European Standard Time)

Das Problem, mit dem ich konfrontiert bin, wenn ich Jahr und Woche vom generierten Datum moment(date).year() | moment(date).isoWeek() möchte, habe ich das Falsche. NICHT SICHER, WIE MAN DIES LÖSET

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen