day-week
Version:
``` 功能 ```:某年某月天数
149 lines (145 loc) • 4.64 kB
JavaScript
const common = require('../public/common')
/**
* 某年某月天数
* @param {String} data 格式:年-月
* @return {Number} 某月天数
*/
let monthDays = function(data){
let index = data.indexOf('-')
let year = parseInt(data)
let month = parseInt(data.substr(index + 1, data.length -1))
if(month < 1 || month > 12 || !year || !month){
return -1
}
let res = common.judgeLeap(year, month)
return res.month
}
/**
* 某两天间隔天数
* @param {String} day1 格式:年-月-日
* @param {String} day2 格式:年-月-日
* @return {Number} 某天与某天相隔天数
*/
let separateDays = function(day1, day2){
let year = parseInt(day1)
let index1 = day1.indexOf('-')
let index2 = day1.lastIndexOf('-')
let month = parseInt(day1.substr(index1 + 1, index2 - 1))
let day = parseInt(day1.substr(index2 + 1, day1.length - 1))
day1 = {
year: year,
month: month,
day: day
}
if(month > 12 || month < 0 || day < 0 || day > 31){
return -1
}
year = parseInt(day2)
index1 = day2.indexOf('-')
index2 = day2.lastIndexOf('-')
month = parseInt(day2.substr(index1 + 1, index2 - 1))
day = parseInt(day2.substr(index2 + 1, day2.length - 1))
day2 = {
year: year,
month: month,
day: day
}
if(month > 12 || month < 0 || day < 0 || day > 31){
return -1
}
if(new Date(`${day1.year}-${day1.month}-${day1.day}`).getTime() === new Date(`${day2.year}-${day2.month}-${day2.day}`).getTime()){
return 0
}
if(new Date(`${day1.year}-${day1.month}-${day1.day}`).getTime() > new Date(`${day2.year}-${day2.month}-${day2.day}`).getTime()){
let buf = {
year: day1.year,
month: day1.month,
day: day1.day
}
day1 = {
year: day2.year,
month: day2.month,
day: day2.day
}
day2 = buf
}
let days = 0
if(day1.year !== day2.year){
for(let i = day1.year + 1; i < day2.year; i++){
let yearDay = common.judgeLeap(i)
days += yearDay.year
}
for(let i = day1.month + 1; i <= 12; i++){
let monthDay = common.judgeLeap(day1.year, i)
days += monthDay.month
}
for(let i = 1; i < day2.month; i++){
let monthDay = common.judgeLeap(day2.year, i)
days += monthDay.month
}
let monthDay = common.judgeLeap(day1.year, day1.month)
days += (monthDay.month - day1.day)
days += (day2.day - 1)
}else{
if(day1.month !== day2.month){
let monthDay = common.judgeLeap(day1.year, day1.month)
if(monthDay.month < day1.day){
return -1
}
days += (monthDay.month - day1.day - 1)
monthDay = common.judgeLeap(day2.year, day2.month)
if(monthDay.month < day2.day){
return -1
}
days += day2.day - 1
}else{
for(let i = day1.month + 1; i < day2.month; i++){
let monthDay = common.judgeLeap(day1.year, i)
days += monthDay.month
}
let monthDay = common.judgeLeap(day2.year, day2.month)
if(monthDay.month < day2.day){
return -1
}
days += (day2.day - 1 - day1.day)
}
}
return days
}
/**
* 获取某天是今年第几天
* @param {String} data 格式为:年-月-日
* @returns {Number} 此年第几天
*/
let yearToDay = function(data){
let year = parseInt(data)
let index1 = data.indexOf('-')
let index2 = data.lastIndexOf('-')
let month = parseInt(data.substr(index1 + 1, index2 - 1))
let day = parseInt(data.substr(index2 + 1, data.length - 1))
if(month < 1 || month > 12 || !year || !month || !day){
return -1
}
let res = common.yearDay(year, month, day)
return res
}
/**
* 获取某天间隔多少天之后的日期
* @param {String} day 年-月-日
* @param {Number} separateDay 间隔日期
* @returns {Number} 日期时间戳
*/
let afterDay = function(day, separateDay){
day = new Date(day)
let data = day.setDate(day.getDate() + parseInt(separateDay))
if(isNaN(data)){
data = -1
}
return data
}
module.exports = {
yearToDay: yearToDay,
separateDays: separateDays,
monthDays: monthDays,
afterDay: afterDay
}