UNPKG

1.74 kBJavaScriptView Raw
1var staticStrFirst = require('./staticStrFirst')
2var staticStrLast = require('./staticStrLast')
3var staticDayTime = require('./staticDayTime')
4
5var helperGetDateFullYear = require('./helperGetDateFullYear')
6var helperGetDateTime = require('./helperGetDateTime')
7var helperGetDateMonth = require('./helperGetDateMonth')
8
9var toStringDate = require('./toStringDate')
10var isValidDate = require('./isValidDate')
11var isNumber = require('./isNumber')
12
13/**
14 * 返回前几月或后几月的日期
15 *
16 * @param {Date} date 日期或数字
17 * @param {Number} offset 月(默认当前月)、前几个月、后几个月
18 * @param {Number/String} day 获取哪天:月初(first)、月末(last)、指定天数(数值),如果为空,但超过指定月份的天数时,则默认单月最后一天
19 * @return {Date}
20 */
21function getWhatMonth (date, offset, day) {
22 var monthOffset = offset && !isNaN(offset) ? offset : 0
23 date = toStringDate(date)
24 if (isValidDate(date)) {
25 if (day === staticStrFirst) {
26 return new Date(helperGetDateFullYear(date), helperGetDateMonth(date) + monthOffset, 1)
27 } else if (day === staticStrLast) {
28 return new Date(helperGetDateTime(getWhatMonth(date, monthOffset + 1, staticStrFirst)) - 1)
29 } else if (isNumber(day)) {
30 date.setDate(day)
31 }
32 if (monthOffset) {
33 var currDate = date.getDate()
34 date.setMonth(helperGetDateMonth(date) + monthOffset)
35 if (currDate !== date.getDate()) {
36 // 当为指定天数,且被跨月了,则默认单月最后一天
37 date.setDate(1)
38 return new Date(helperGetDateTime(date) - staticDayTime)
39 }
40 }
41 }
42 return date
43}
44
45module.exports = getWhatMonth