Ich erstelle einen Kalender, in dem ich Wochen in Tabellenform drucke. Eine Voraussetzung ist, dass ich die Wochen entweder am Montag oder am Sonntag beginnen kann, je nach Benutzeroption. Es fällt mir schwer, die isoWeekday- Methode von moment zu verwenden.
// Start of some date range. Can be any day of the week.
var startOfPeriod = moment("2013-06-23T00:00:00"),
// We begin on the start of the first week.
// Mon Tues Wed Thur Fri Sat Sun
// 20 21 22 23 24 25 26
begin = moment(startOfPeriod).isoWeekday(1); // will pull from user setting
console.log(begin.isoWeekday()); // 1 - all good
// Let's get the beginning of this first week, respecting the isoWeekday
begin.startOf('week');
console.log(begin.isoWeekday()); // 7 - what happened ???
// Get column headers
for (var i=0; i<7; i++) {
console.log(begin.format('ddd')); // I want Monday first!
begin.add('d', 1);
}
BEARBEITEN Ich habe falsch verstanden, was isoWeekday
tatsächlich geschah. Ich dachte, es würde die Variable "Welcher Wochentag ist der erste Wochentag" gesetzt (die nicht existiert). Was es tatsächlich tut, ist einfach den Wochentag zu ändern, genau wie moment.weekday()
, aber verwendet einen Bereich von 1-7 anstelle des Bereichs 0-6.
startOf('week')
hängt vom aktuellen Gebietsschema ab, in dem der Sonntag in Ihrem Fall offensichtlich den Beginn der Woche markiert.startOf('iweek')
wird den ISO-Start der Woche bekommen, der Montag ist. Aber Sie haben Recht, ich habe keine Dokumentation auf der offiziellen Website gefunden ...