hae
Version:
Mobile web UI based on Vux
75 lines (67 loc) • 1.67 kB
JavaScript
function isLeapYear (year) {
return year % 100 !== 0 && year % 4 === 0 || year % 400 === 0
}
function getMaxDay (year, month) {
year = parseFloat(year)
month = parseFloat(month)
if (month === 2) {
return isLeapYear(year) ? 29 : 28
}
return [4, 6, 9, 11].indexOf(month) >= 0 ? 30 : 31
}
function getYears (startDate, endDate) {
let startYear = startDate.getFullYear()
const endYear = endDate.getFullYear()
let rs = []
while (startYear <= endYear) {
rs.push(startYear)
startYear++
}
return {
minYear: rs[0],
maxYear: rs[rs.length - 1]
}
}
function getMonths (startDate, endDate, year) {
const startYear = startDate.getFullYear()
const endYear = endDate.getFullYear()
const startMonth = startDate.getMonth() + 1
const endMonth = endDate.getMonth() + 1
let start = 1
let end = 12
if (year === startYear) {
start = startMonth
}
if (year === endYear) {
end = endMonth
}
return {
minMonth: start,
maxMonth: end
}
}
function getDays (startDate, endDate, year, month) {
const startYear = startDate.getFullYear()
const endYear = endDate.getFullYear()
const startMonth = startDate.getMonth() + 1
const endMonth = endDate.getMonth() + 1
const startDay = startDate.getDate()
const endDay = endDate.getDate()
let start = 1
let end = getMaxDay(year, month)
if (year === startYear && month === startMonth) {
start = startDay
}
if (year === endYear && month === endMonth) {
end = endDay
}
return {
minDay: start,
maxDay: end
}
}
export {
getYears,
getMonths,
getDays
}