311a62f366a739b75fd9f1e1c241313f0a5b1f13fe2a2f6bedf29fa5e2da830ab69647cc7e79c488af4c8289311dad1b373246d5970d42468ee5163366cccf 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { daysInMonth } from '../units/month';
  2. import { YEAR, MONTH, DATE, HOUR, MINUTE, SECOND, MILLISECOND, WEEK, WEEKDAY } from '../units/constants';
  3. import getParsingFlags from '../create/parsing-flags';
  4. export default function checkOverflow (m) {
  5. var overflow;
  6. var a = m._a;
  7. if (a && getParsingFlags(m).overflow === -2) {
  8. overflow =
  9. a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :
  10. a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
  11. a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
  12. a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :
  13. a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :
  14. a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
  15. -1;
  16. if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
  17. overflow = DATE;
  18. }
  19. if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
  20. overflow = WEEK;
  21. }
  22. if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
  23. overflow = WEEKDAY;
  24. }
  25. getParsingFlags(m).overflow = overflow;
  26. }
  27. return m;
  28. }