徐总多门店
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
2.0 KiB

5 months ago
var setupDefaults = require('./setupDefaults')
var staticDayTime = require('./staticDayTime')
var staticWeekTime = require('./staticWeekTime')
var helperGetDateTime = require('./helperGetDateTime')
var toStringDate = require('./toStringDate')
var isValidDate = require('./isValidDate')
var isNumber = require('./isNumber')
/**
* 返回前几周或后几周的星期几
*
* @param {Date} date 日期
* @param {Number} offsetWeek (默认当前周)前几周后几周
* @param {Number} offsetDay 星期天(默认0)星期一(1)星期二(2)星期三(3)星期四(4)星期五(5)星期六(6)
* @param {Number} firstDay 周视图的起始天默认星期一
* @return {Date}
*/
function getWhatWeek (date, offsetWeek, offsetDay, firstDay) {
date = toStringDate(date)
if (isValidDate(date)) {
var hasCustomDay = isNumber(offsetDay)
var hasStartDay = isNumber(firstDay)
var whatDayTime = helperGetDateTime(date)
// 如果指定了天或周视图起始天
if (hasCustomDay || hasStartDay) {
var viewStartDay = hasStartDay ? firstDay : setupDefaults.firstDayOfWeek
var currentDay = date.getDay()
var customDay = hasCustomDay ? offsetDay : currentDay
if (currentDay !== customDay) {
var offsetNum = 0
if (viewStartDay > currentDay) {
offsetNum = -(7 - viewStartDay + currentDay)
} else if (viewStartDay < currentDay) {
offsetNum = viewStartDay - currentDay
}
if (customDay > viewStartDay) {
whatDayTime += ((customDay === 0 ? 7 : customDay) - viewStartDay + offsetNum) * staticDayTime
} else if (customDay < viewStartDay) {
whatDayTime += (7 - viewStartDay + customDay + offsetNum) * staticDayTime
} else {
whatDayTime += offsetNum * staticDayTime
}
}
}
if (offsetWeek && !isNaN(offsetWeek)) {
whatDayTime += offsetWeek * staticWeekTime
}
return new Date(whatDayTime)
}
return date
}
module.exports = getWhatWeek