Tôi đang tạo một lịch trong đó tôi in ra các tuần ở định dạng bảng. Một yêu cầu là tôi có thể bắt đầu các tuần vào Thứ Hai hoặc Chủ Nhật, theo một số tùy chọn của người dùng. Tôi đang gặp khó khăn khi sử dụng phương pháp isoWeekday của moment .
// 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);
}
CHỈNH SỬA Tôi đã hiểu sai những gì isoWeekday
đang thực sự làm. Tôi nghĩ rằng nó đặt biến "ngày nào trong tuần là ngày đầu tiên trong tuần" (điều đó không tồn tại). Những gì nó thực sự làm chỉ đơn giản là thay đổi ngày trong tuần, giống như moment.weekday()
, nhưng sử dụng phạm vi 1-7 thay vì 0-6.
startOf('week')
phụ thuộc vào ngôn ngữ hiện tại, nơi Chủ nhật rõ ràng là ngày bắt đầu của tuần trong trường hợp của bạn.startOf('iweek')
ISO sẽ bắt đầu vào thứ Hai. Nhưng bạn nói đúng, tôi không tìm thấy bất kỳ tài liệu trên trang web chính thức ...