Skip to content

Commit

Permalink
fixed issue: options.weekStartsOn set to 1 doesn't work for Sundays (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
waseemahmad31 authored and leshakoss committed Aug 23, 2019
1 parent 85ba4d8 commit 6244923
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 5 deletions.
23 changes: 18 additions & 5 deletions src/getWeekOfMonth/index.js
Expand Up @@ -51,12 +51,25 @@ export default function getWeekOfMonth(date, dirtyOptions) {
throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')
}

var currentDayOfMonth = getDate(date)
if (isNaN(currentDayOfMonth)) {
return currentDayOfMonth
}

var startWeekDay = getDay(startOfMonth(date))
var currentWeekDay = getDay(date)
var lastDayOfFirstWeek = 0

var startWeekDayWithOptions =
startWeekDay < weekStartsOn ? 7 - weekStartsOn : startWeekDay
var diff = startWeekDayWithOptions > currentWeekDay ? 7 - weekStartsOn : 0
if (startWeekDay >= weekStartsOn) {
lastDayOfFirstWeek = weekStartsOn + 7 - startWeekDay
} else {
lastDayOfFirstWeek = weekStartsOn - startWeekDay
}

return Math.ceil((getDate(date) + diff) / 7)
var weekNumber = 1

if (currentDayOfMonth > lastDayOfFirstWeek) {
var remainingDaysAfterFirstWeek = currentDayOfMonth - lastDayOfFirstWeek
weekNumber = weekNumber + Math.ceil(remainingDaysAfterFirstWeek / 7)
}
return weekNumber
}
7 changes: 7 additions & 0 deletions src/getWeekOfMonth/test.js
Expand Up @@ -74,4 +74,11 @@ describe('getWeekOfMonth', function() {
it('throws TypeError exception if passed less than 1 argument', function() {
assert.throws(getWeekOfMonth.bind(null), TypeError)
})

it('returns the week of the month of the given date, when the given date is sunday', function() {
var result = getWeekOfMonth(new Date(2019, 4 /* May */, 5), {
weekStartsOn: 1
})
assert(result === 1)
})
})

0 comments on commit 6244923

Please sign in to comment.