123456789101112131415161718192021222324252627282930313233343536 |
- var parse = require('../parse/index.js')
- var startOfISOYear = require('../start_of_iso_year/index.js')
- var differenceInCalendarDays = require('../difference_in_calendar_days/index.js')
- /**
- * @category ISO Week-Numbering Year Helpers
- * @summary Set the ISO week-numbering year to the given date.
- *
- * @description
- * Set the ISO week-numbering year to the given date,
- * saving the week number and the weekday number.
- *
- * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
- *
- * @param {Date|String|Number} date - the date to be changed
- * @param {Number} isoYear - the ISO week-numbering year of the new date
- * @returns {Date} the new date with the ISO week-numbering year setted
- *
- * @example
- * // Set ISO week-numbering year 2007 to 29 December 2008:
- * var result = setISOYear(new Date(2008, 11, 29), 2007)
- * //=> Mon Jan 01 2007 00:00:00
- */
- function setISOYear (dirtyDate, dirtyISOYear) {
- var date = parse(dirtyDate)
- var isoYear = Number(dirtyISOYear)
- var diff = differenceInCalendarDays(date, startOfISOYear(date))
- var fourthOfJanuary = new Date(0)
- fourthOfJanuary.setFullYear(isoYear, 0, 4)
- fourthOfJanuary.setHours(0, 0, 0, 0)
- date = startOfISOYear(fourthOfJanuary)
- date.setDate(date.getDate() + diff)
- return date
- }
- module.exports = setISOYear
|