bc8afe5376e135c33b2cf4d549f657f8024562dfa74a7aa3d3a1ea404171a29831c5aba13316993f1e0670a0f6f15cf1ca357968707dd36186390a01140abe 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { daysInMonth } from '../units/month';
  2. import {
  3. YEAR,
  4. MONTH,
  5. DATE,
  6. HOUR,
  7. MINUTE,
  8. SECOND,
  9. MILLISECOND,
  10. WEEK,
  11. WEEKDAY,
  12. } from '../units/constants';
  13. import getParsingFlags from '../create/parsing-flags';
  14. export default function checkOverflow(m) {
  15. var overflow,
  16. a = m._a;
  17. if (a && getParsingFlags(m).overflow === -2) {
  18. overflow =
  19. a[MONTH] < 0 || a[MONTH] > 11
  20. ? MONTH
  21. : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
  22. ? DATE
  23. : a[HOUR] < 0 ||
  24. a[HOUR] > 24 ||
  25. (a[HOUR] === 24 &&
  26. (a[MINUTE] !== 0 ||
  27. a[SECOND] !== 0 ||
  28. a[MILLISECOND] !== 0))
  29. ? HOUR
  30. : a[MINUTE] < 0 || a[MINUTE] > 59
  31. ? MINUTE
  32. : a[SECOND] < 0 || a[SECOND] > 59
  33. ? SECOND
  34. : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
  35. ? MILLISECOND
  36. : -1;
  37. if (
  38. getParsingFlags(m)._overflowDayOfYear &&
  39. (overflow < YEAR || overflow > DATE)
  40. ) {
  41. overflow = DATE;
  42. }
  43. if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
  44. overflow = WEEK;
  45. }
  46. if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
  47. overflow = WEEKDAY;
  48. }
  49. getParsingFlags(m).overflow = overflow;
  50. }
  51. return m;
  52. }