summaryrefslogtreecommitdiff
path: root/date-fns/src/_lib/getUTCWeekYear/index.js
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2021-08-23 16:46:06 -0300
committerSebastian <sebasjm@gmail.com>2021-08-23 16:48:30 -0300
commit38acabfa6089ab8ac469c12b5f55022fb96935e5 (patch)
tree453dbf70000cc5e338b06201af1eaca8343f8f73 /date-fns/src/_lib/getUTCWeekYear/index.js
parentf26125e039143b92dc0d84e7775f508ab0cdcaa8 (diff)
downloadnode-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.tar.gz
node-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.tar.bz2
node-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.zip
added web vendorsHEADmaster
Diffstat (limited to 'date-fns/src/_lib/getUTCWeekYear/index.js')
-rw-r--r--date-fns/src/_lib/getUTCWeekYear/index.js51
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
+ }
+}