js日期实用工具函数
2020-04-05 本文已影响0人
小小少年小阿清
获取当前日期
// 获取当前日期
function getNowDate () {
let date = new Date()
let Y = date.getFullYear()
let M = date.getMonth() + 1
let D = date.getDate()
M = M < 10 ? `0${M}` : M
D = D < 10 ? `0${D}` : D
return `${Y}-${M}-${D}`
}
获取当前日期前n个月
// 获取当前日期前n个月的日期
function getPreMonthDay (date, monthNum) {
let dateArr = date.split('-')
let year = dateArr[0] // 获取当前日期的年份
let month = dateArr[1] // 获取当前日期的月份
let day = dateArr[2] // 获取当前日期的日
// let days = new Date(year, month, 0)
// days = days.getDate() //获取当前日期中月的天数
let year2 = year
let month2 = parseInt(month) - monthNum
if (month2 <= 0) {
year2 =
parseInt(year2) -
parseInt(month2 / 12 === 0 ? 1 : Math.abs(parseInt(month2 / 12)) + 1)
month2 = 12 - (Math.abs(month2) % 12)
}
let day2 = day
let days2 = new Date(year2, month2, 0)
days2 = days2.getDate()
if (day2 > days2) {
day2 = days2
}
if (month2 < 10) {
month2 = '0' + month2
}
let t2 = year2 + '-' + month2 + '-' + day2
return t2
}
判断是否为合法日期
/**
* @method 判断是否为合法日期
* @param date 为Date转化后的值
*/
function isValidDate (date) {
return date instanceof Date && !isNaN(date.getTime())
}
判断一个时间是否位于两时间之间
/**
* @method 判断一个时间是否位于两时间之间
* @param sDate1,sDate2为日期,如:2019-01-01
*/
function dateBetweenJudget (startDate, endDate, date0) {
let oStartDate = new Date(startDate)
let oEndDate = new Date(endDate)
let oDate0 = new Date(date0)
if ((oEndDate.getTime() >= oDate0.getTime()) && (oStartDate.getTime() <= oDate0.getTime())) {
return true
}
return false
}
比较两个日期的大小
/* @method 比较两个日期的大小
* @param sDate1,sDate2为日期,如:2019-01-01
*/
function dateJudget (sDate1, sDate2) {
var oDate1 = new Date(sDate1)
var oDate2 = new Date(sDate2)
if (oDate1.getTime() > oDate2.getTime()) {
return false
}
return true
}
获取当前月份前n个月或者后n个月(返回日期列表)
/**
* @method 获取当前月份前n个月或者后n个月
* @param range 范围,before表示前n个月,after表示后n个月
* @param date 特定的日期,如2019-01-01,若传‘’,默认为当前日期
*/
function getMonthRange (range, n, date = '') {
var monthArr = []
let data = (date === '') ? new Date() : new Date(date)
if (range === 'before') {
data.setMonth(data.getMonth() + 1, 1) // 获取到当前月份,设置月份
} else {
data.setMonth(data.getMonth() - 1, 1) // 获取到当前月份,设置月份
}
for (var i = 0; i < n; i++) {
if (range === 'before') {
data.setMonth(data.getMonth() - 1) // 每次循环一次 月份值减1
} else {
data.setMonth(data.getMonth() + 1) // 每次循环一次 月份值加1
}
let m = data.getMonth() + 1
let m2 = m < 10 ? '0' + m : m
let json = {
yearAndMonth: data.getFullYear() + '-' + m2,
month: m,
year: data.getFullYear(),
}
monthArr.push(json)
}
return monthArr
}
获取某个月有多少天
/**
* @method 获取某个月有多少天数
* @param year 年
* @param month 月(如:2)
*/
function getDaysInMonth (year, month) {
return new Date(year, month, 0).getDate()
}
获取当前日期的前一个月
/**
* @method 获取当前日期的前一个月
*/
function getPreMonthDate (times) {
times = new Date(times)
let Y = times.getFullYear()
let M = times.getMonth() + 1
const D = times.getDate()
if (M === 1) {
M = 12
Y = Y - 1
} else {
M = M - 1
}
return `${Y}-${M}-${D}`
}
获取当前日期的前两个月
/**
* @method 获取当前日期的前两个月
*/
function getPreMonthDate2 (times) {
times = new Date(times)
let Y = times.getFullYear()
let M = times.getMonth() + 1
const D = times.getDate()
if (M === 2) {
M = 12
Y = Y - 1
} else if (M === 1) {
M = 11
Y = Y - 1
} else {
M = M - 2
}
return `${Y}-${M}-${D}`
}
根据日期判断今天周几
/**
* @method 根据日期判断今天周几
* @param {*} date 日期格式为字符串2018-01-01
*/
function getDateWeek (date) {
const weekDay = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
const myDate = new Date(Date.parse(date))
return weekDay[myDate.getDay()]
}
判断两个日期之间的天数差值
/**
* @method 判断两个日期之间的天数差值
* @param {*} endDate 结束天数 日期格式为字符串2018-01-01
* @param {*} startDate 开始日期 日期格式为字符串2018-01-01
*/
function DateDifference (endDate, startDate) {
return parseInt((Math.abs(new Date(endDate) - new Date(startDate)) / 1000 / 60 / 60 / 24) + 1)
}