index.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = getISOWeekYear;
  7. var _index = _interopRequireDefault(require("../toDate/index.js"));
  8. var _index2 = _interopRequireDefault(require("../startOfISOWeek/index.js"));
  9. var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
  10. /**
  11. * @name getISOWeekYear
  12. * @category ISO Week-Numbering Year Helpers
  13. * @summary Get the ISO week-numbering year of the given date.
  14. *
  15. * @description
  16. * Get the ISO week-numbering year of the given date,
  17. * which always starts 3 days before the year's first Thursday.
  18. *
  19. * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
  20. *
  21. * @param {Date|Number} date - the given date
  22. * @returns {Number} the ISO week-numbering year
  23. * @throws {TypeError} 1 argument required
  24. *
  25. * @example
  26. * // Which ISO-week numbering year is 2 January 2005?
  27. * const result = getISOWeekYear(new Date(2005, 0, 2))
  28. * //=> 2004
  29. */
  30. function getISOWeekYear(dirtyDate) {
  31. (0, _index3.default)(1, arguments);
  32. var date = (0, _index.default)(dirtyDate);
  33. var year = date.getFullYear();
  34. var fourthOfJanuaryOfNextYear = new Date(0);
  35. fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);
  36. fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);
  37. var startOfNextYear = (0, _index2.default)(fourthOfJanuaryOfNextYear);
  38. var fourthOfJanuaryOfThisYear = new Date(0);
  39. fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);
  40. fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);
  41. var startOfThisYear = (0, _index2.default)(fourthOfJanuaryOfThisYear);
  42. if (date.getTime() >= startOfNextYear.getTime()) {
  43. return year + 1;
  44. } else if (date.getTime() >= startOfThisYear.getTime()) {
  45. return year;
  46. } else {
  47. return year - 1;
  48. }
  49. }
  50. module.exports = exports.default;