summaryrefslogtreecommitdiff
path: root/date-fns/src/_lib/getUTCDayOfYear
diff options
context:
space:
mode:
Diffstat (limited to 'date-fns/src/_lib/getUTCDayOfYear')
-rw-r--r--date-fns/src/_lib/getUTCDayOfYear/index.js18
-rw-r--r--date-fns/src/_lib/getUTCDayOfYear/test.js36
2 files changed, 54 insertions, 0 deletions
diff --git a/date-fns/src/_lib/getUTCDayOfYear/index.js b/date-fns/src/_lib/getUTCDayOfYear/index.js
new file mode 100644
index 0000000..37cdc0e
--- /dev/null
+++ b/date-fns/src/_lib/getUTCDayOfYear/index.js
@@ -0,0 +1,18 @@
+import toDate from '../../toDate/index'
+import requiredArgs from '../requiredArgs/index'
+
+var MILLISECONDS_IN_DAY = 86400000
+
+// 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 getUTCDayOfYear(dirtyDate) {
+ requiredArgs(1, arguments)
+
+ var date = toDate(dirtyDate)
+ var timestamp = date.getTime()
+ date.setUTCMonth(0, 1)
+ date.setUTCHours(0, 0, 0, 0)
+ var startOfYearTimestamp = date.getTime()
+ var difference = timestamp - startOfYearTimestamp
+ return Math.floor(difference / MILLISECONDS_IN_DAY) + 1
+}
diff --git a/date-fns/src/_lib/getUTCDayOfYear/test.js b/date-fns/src/_lib/getUTCDayOfYear/test.js
new file mode 100644
index 0000000..b4f2963
--- /dev/null
+++ b/date-fns/src/_lib/getUTCDayOfYear/test.js
@@ -0,0 +1,36 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getUTCDayOfYear from '.'
+
+describe('getUTCDayOfYear', function() {
+ it('returns the day of the year of the given date', function() {
+ var result = getUTCDayOfYear(new Date(Date.UTC(2014, 6 /* Jul */, 2)))
+ assert(result === 183)
+ })
+
+ it('accepts a timestamp', function() {
+ var result = getUTCDayOfYear(
+ new Date(Date.UTC(2014, 0 /* Jan */, 2)).getTime()
+ )
+ assert(result === 2)
+ })
+
+ it('handles dates before 100 AD', function() {
+ var initialDate = new Date(0)
+ initialDate.setUTCFullYear(0, 11 /* Dec */, 31)
+ initialDate.setUTCHours(0, 0, 0, 0)
+ var result = getUTCDayOfYear(initialDate)
+ assert(result === 366)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ var result = getUTCDayOfYear(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getUTCDayOfYear.bind(null), TypeError)
+ })
+})