getWhatMonth.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. var staticStrFirst = require('../static/staticStrFirst')
  2. var staticStrLast = require('../static/staticStrLast')
  3. var isNumber = require('../base/isNumber')
  4. var helperGetDateFullYear = require('./helperGetDateFullYear')
  5. var helperGetDateTime = require('./helperGetDateTime')
  6. var helperGetDateMonth = require('./helperGetDateMonth')
  7. var toStringDate = require('./toStringDate')
  8. var isValidDate = require('./isValidDate')
  9. /**
  10. * 返回前几月或后几月的日期
  11. *
  12. * @param {Date} date 日期或数字
  13. * @param {Number} month 月(默认当前月)、前几个月、后几个月
  14. * @param {Number/String} day 获取哪天(null默认当前天)、月初(first)、月末(last)、指定天数(数值)
  15. * @return {Date}
  16. */
  17. function getWhatMonth (date, month, day) {
  18. var monthOffset = month && !isNaN(month) ? month : 0
  19. date = toStringDate(date)
  20. if (isValidDate(date)) {
  21. if (day === staticStrFirst) {
  22. return new Date(helperGetDateFullYear(date), helperGetDateMonth(date) + monthOffset, 1)
  23. } else if (day === staticStrLast) {
  24. return new Date(helperGetDateTime(getWhatMonth(date, monthOffset + 1, staticStrFirst)) - 1)
  25. } else if (isNumber(day)) {
  26. date.setDate(day)
  27. }
  28. if (monthOffset) {
  29. date.setMonth(helperGetDateMonth(date) + monthOffset)
  30. }
  31. }
  32. return date
  33. }
  34. module.exports = getWhatMonth