MonthFromTime.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. 'use strict';
  2. var $RangeError = require('es-errors/range');
  3. var DayWithinYear = require('./DayWithinYear');
  4. var InLeapYear = require('./InLeapYear');
  5. // https://262.ecma-international.org/5.1/#sec-15.9.1.4
  6. module.exports = function MonthFromTime(t) {
  7. var day = DayWithinYear(t);
  8. if (0 <= day && day < 31) {
  9. return 0;
  10. }
  11. var leap = InLeapYear(t);
  12. if (31 <= day && day < (59 + leap)) {
  13. return 1;
  14. }
  15. if ((59 + leap) <= day && day < (90 + leap)) {
  16. return 2;
  17. }
  18. if ((90 + leap) <= day && day < (120 + leap)) {
  19. return 3;
  20. }
  21. if ((120 + leap) <= day && day < (151 + leap)) {
  22. return 4;
  23. }
  24. if ((151 + leap) <= day && day < (181 + leap)) {
  25. return 5;
  26. }
  27. if ((181 + leap) <= day && day < (212 + leap)) {
  28. return 6;
  29. }
  30. if ((212 + leap) <= day && day < (243 + leap)) {
  31. return 7;
  32. }
  33. if ((243 + leap) <= day && day < (273 + leap)) {
  34. return 8;
  35. }
  36. if ((273 + leap) <= day && day < (304 + leap)) {
  37. return 9;
  38. }
  39. if ((304 + leap) <= day && day < (334 + leap)) {
  40. return 10;
  41. }
  42. if ((334 + leap) <= day && day < (365 + leap)) {
  43. return 11;
  44. }
  45. throw new $RangeError('Assertion failed: `day` is out of range');
  46. };