isoWeekday(7) gibt mir den Sonntag dieser iso-Woche (Montag-Sonntag)
isoWeekday("Sonntag") gibt mir den Sonntag der vorherigen iso-Woche
Version: https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js
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
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:
In einer ISO-Woche ist 7 also immer Sonntag. In der Dokumentation des Alias steht:
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, istmoment().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.