ฉันกำลังสร้างปฏิทินที่จะพิมพ์สัปดาห์ในรูปแบบตาราง ข้อกำหนดประการหนึ่งคือฉันสามารถเริ่มสัปดาห์ได้ในวันจันทร์หรือวันอาทิตย์ตามตัวเลือกของผู้ใช้ ฉันมีปัญหาในการใช้วิธีisoWeekdayของช่วงเวลานี้
// 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);
}
แก้ไขฉันเข้าใจผิดว่าisoWeekday
กำลังทำอะไรอยู่ ฉันคิดว่ามันตั้งค่าตัวแปร "วันใดของสัปดาห์เป็นวันแรกของสัปดาห์" (ซึ่งไม่มีอยู่) สิ่งที่ทำได้จริงเพียงแค่เปลี่ยนวันในสัปดาห์เช่นเดียวกับmoment.weekday()
แต่ใช้ช่วง 1-7 แทน 0-6
startOf('week')
ขึ้นอยู่กับสถานที่ในปัจจุบันซึ่งเห็นได้ชัดว่าวันอาทิตย์เป็นจุดเริ่มต้นของสัปดาห์ในกรณีของคุณstartOf('iweek')
จะได้รับ ISO เริ่มต้นของสัปดาห์ซึ่งก็คือวันจันทร์ แต่คุณพูดถูกฉันไม่พบเอกสารใด ๆ ในเว็บไซต์อย่างเป็นทางการ ...