diff options
author | Sebastian <sebasjm@gmail.com> | 2021-08-23 16:46:06 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2021-08-23 16:48:30 -0300 |
commit | 38acabfa6089ab8ac469c12b5f55022fb96935e5 (patch) | |
tree | 453dbf70000cc5e338b06201af1eaca8343f8f73 /date-fns/src/_lib/getUTCWeekYear/index.js | |
parent | f26125e039143b92dc0d84e7775f508ab0cdcaa8 (diff) | |
download | node-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.tar.gz node-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.tar.bz2 node-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.zip |
Diffstat (limited to 'date-fns/src/_lib/getUTCWeekYear/index.js')
-rw-r--r-- | date-fns/src/_lib/getUTCWeekYear/index.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/date-fns/src/_lib/getUTCWeekYear/index.js b/date-fns/src/_lib/getUTCWeekYear/index.js new file mode 100644 index 0000000..1f561c7 --- /dev/null +++ b/date-fns/src/_lib/getUTCWeekYear/index.js @@ -0,0 +1,51 @@ +import toInteger from '../toInteger/index' +import toDate from '../../toDate/index' +import startOfUTCWeek from '../startOfUTCWeek/index' +import requiredArgs from '../requiredArgs/index' + +// This function will be a part of public API when UTC function will be implemented. +// See issue: https://github.com/date-fns/date-fns/issues/376 +export default function getUTCWeekYear(dirtyDate, dirtyOptions) { + requiredArgs(1, arguments) + + var date = toDate(dirtyDate, dirtyOptions) + var year = date.getUTCFullYear() + + var options = dirtyOptions || {} + var locale = options.locale + var localeFirstWeekContainsDate = + locale && locale.options && locale.options.firstWeekContainsDate + var defaultFirstWeekContainsDate = + localeFirstWeekContainsDate == null + ? 1 + : toInteger(localeFirstWeekContainsDate) + var firstWeekContainsDate = + options.firstWeekContainsDate == null + ? defaultFirstWeekContainsDate + : toInteger(options.firstWeekContainsDate) + + // Test if weekStartsOn is between 1 and 7 _and_ is not NaN + if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) { + throw new RangeError( + 'firstWeekContainsDate must be between 1 and 7 inclusively' + ) + } + + var firstWeekOfNextYear = new Date(0) + firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate) + firstWeekOfNextYear.setUTCHours(0, 0, 0, 0) + var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions) + + var firstWeekOfThisYear = new Date(0) + firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate) + firstWeekOfThisYear.setUTCHours(0, 0, 0, 0) + var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions) + + if (date.getTime() >= startOfNextYear.getTime()) { + return year + 1 + } else if (date.getTime() >= startOfThisYear.getTime()) { + return year + } else { + return year - 1 + } +} |