Saya membuat kalender tempat saya mencetak minggu dalam format tabel. Salah satu persyaratannya adalah saya dapat memulai minggu-minggu tersebut pada hari Senin atau Minggu, sesuai dengan beberapa opsi pengguna. Saya mengalami kesulitan menggunakan metode isoWeekday momen .
// 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);
}
EDIT Saya salah paham tentang apa isoWeekday
yang sebenarnya saya lakukan. Saya pikir itu menetapkan variabel "hari mana dalam seminggu yang merupakan hari pertama dalam minggu" (yang tidak ada). Apa yang sebenarnya dilakukannya hanyalah mengubah hari dalam seminggu, seperti halnya moment.weekday()
, tetapi menggunakan rentang 1-7, bukan 0-6.
startOf('week')
tergantung pada lokasi saat ini di mana hari Minggu jelas menandai awal minggu dalam kasus Anda.startOf('iweek')
akan mendapatkan ISO awal minggu ini, yaitu Senin. Tapi Anda benar, saya tidak menemukan dokumentasi apapun di situs resmi ...