Reputation: 1274
So i used momentjs to handle my date formats and get the current week.
But my question is how do i get it to start from monday to sunday.
getweek.js
function getCurrentWeek() {
var currentDate = moment();
var weekStart = currentDate.clone().startOf('week');
var weekEnd = currentDate.clone().endOf('week');
var days = [];
for (var i = 0; i <= 6; i++) {
days.push(moment(weekStart).add(i, 'days').format("MMMM Do,dddd"));
}
console.log($scope.weekDays = days);
}
result
{0:"November 5th,Sunday"
1:"November 6th,Monday"
2:"November 7th,Tuesday"
3:"November 8th,Wednesday"
4:"November 9th,Thursday"
5:"November 10th,Friday"
6:"November 11th,Saturday"}
expected result
{0:"November 6th,Monday"
1:"November 7th,Tuesday"
2:"November 8th,Wednesday"
3:"November 9th,Thursday"
4:"November 10th,Friday"
5:"November 11th,Saturday"
6:"November 12th,Sunday"}
Thanks.
Upvotes: 10
Views: 27276
Reputation: 246
getWeekDays (numberOfWeek:number,numberOfDays:number) {
let weekStart = DateTime.now().startOf('week');
for (let week=1 ; week <= numberOfWeek ; week++ ){
const weekDays = [];
for(let day=0 ; day < numberOfDays; day++ ){
weekDays.push(weekStart.plus({ days: day }).toFormat('yyyy-MM-dd'))
}
this.weeks.push(weekDays);
weekStart = weekStart.plus({ days: 7 });
}
}
The above method will allow you to produce an array of week days for a given number of weeks.
the end outcome will be as follows
Upvotes: 1
Reputation: 3730
You can use startOf('isoWeek')
to start the week at Monday.
var weekStart = currentDate.clone().startOf('isoWeek');
function getCurrentWeek() {
var currentDate = moment();
var weekStart = currentDate.clone().startOf('isoWeek');
var weekEnd = currentDate.clone().endOf('isoWeek');
var days = [];
for (var i = 0; i <= 6; i++) {
days.push(moment(weekStart).add(i, 'days').format("MMMM Do,dddd"));
}
console.log(days);
}
getCurrentWeek();
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"></script>
Upvotes: 17
Reputation: 20885
Use 'isoweek'
instead of 'week'
var currentDate = moment();
var weekStart = currentDate.clone().startOf('isoweek');
var days = [];
for (var i = 0; i <= 6; i++) {
console.log(moment(weekStart).add(i, 'days').format("MMMM Do,dddd"));
}
Upvotes: 1