summaryrefslogtreecommitdiff
path: root/date-fns/src/_lib/startOfUTCWeek/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'date-fns/src/_lib/startOfUTCWeek/index.js')
-rw-r--r--date-fns/src/_lib/startOfUTCWeek/index.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/date-fns/src/_lib/startOfUTCWeek/index.js b/date-fns/src/_lib/startOfUTCWeek/index.js
new file mode 100644
index 0000000..fb5db75
--- /dev/null
+++ b/date-fns/src/_lib/startOfUTCWeek/index.js
@@ -0,0 +1,33 @@
+import toInteger from '../toInteger/index'
+import toDate from '../../toDate/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 startOfUTCWeek(dirtyDate, dirtyOptions) {
+ requiredArgs(1, arguments)
+
+ var options = dirtyOptions || {}
+ var locale = options.locale
+ var localeWeekStartsOn =
+ locale && locale.options && locale.options.weekStartsOn
+ var defaultWeekStartsOn =
+ localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)
+ var weekStartsOn =
+ options.weekStartsOn == null
+ ? defaultWeekStartsOn
+ : toInteger(options.weekStartsOn)
+
+ // Test if weekStartsOn is between 0 and 6 _and_ is not NaN
+ if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
+ throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')
+ }
+
+ var date = toDate(dirtyDate)
+ var day = date.getUTCDay()
+ var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn
+
+ date.setUTCDate(date.getUTCDate() - diff)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+}