diff options
Diffstat (limited to 'date-fns/src/_lib/getUTCDayOfYear')
-rw-r--r-- | date-fns/src/_lib/getUTCDayOfYear/index.js | 18 | ||||
-rw-r--r-- | date-fns/src/_lib/getUTCDayOfYear/test.js | 36 |
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) + }) +}) |