js 获取时间 每年 每月 每季度 等

/** *
* 获得当前时间
*/
function getCurrentDate() {
return new Date()
}

/**
* **得到本季度开始的月份**
* @param month 需要计算的月份
***/
function getQuarterSeasonStartMonth(month) {
// var quarterMonthStart = 0
var spring = 0 // 春
var summer = 3 // 夏
var fall = 6 // 秋
var winter = 9 // 冬
// 月份从0-11
if (month < 3) {
return spring
}

if (month < 6) {
return summer
}

if (month < 9) {
return fall
}

return winter
}
/**
* **获得该月的天数**
* @param year年份
* @param month月份
* */
function getMonthDays(year, month) {
// 本月第一天 1-31
var relativeDate = new Date(year, month, 1)
// 获得当前月份0-11
var relativeMonth = relativeDate.getMonth()
// 获得当前年份4位年
var relativeYear = relativeDate.getFullYear()

// 当为12月的时候年份需要加1
// 月份需要更新为0 也就是下一年的第一个月
if (relativeMonth === 11) {
relativeYear++
relativeMonth = 0
} else {
// 否则只是月份增加,以便求的下一月的第一天
relativeMonth++
}
// 一天的毫秒数
var millisecond = 1000 * 60 * 60 * 24
// 下月的第一天
var nextMonthDayOne = new Date(relativeYear, relativeMonth, 1)
// 返回得到上月的最后一天,也就是本月总天数
return new Date(nextMonthDayOne.getTime() - millisecond).getDate()
}
// **时间格式化**
function formatDate(date) {
var myyear = date.getFullYear()
var mymonth = date.getMonth() + 1
var myweekday = date.getDate()
if (mymonth < 10) {
mymonth = '0' + mymonth
}
if (myweekday < 10) {
myweekday = '0' + myweekday
}
return (myyear + '-' + mymonth + '-' + myweekday)
}
/** *
* **得到本年的起止日期**
*
*/
function getCurrentYear() {
// 起止日期数组
var startStop = []
// 获取当前时间
var currentDate = getCurrentDate()
// 获得当前年份4位年
var currentYear = currentDate.getFullYear()

// 本年第一天
var currentYearFirstDate = new Date(currentYear, 0, 1)
// 本年最后一天
var currentYearLastDate = new Date(currentYear, 11, 31)
// 添加至数组
startStop.push(formatDate(currentYearFirstDate))
startStop.push(formatDate(currentYearLastDate))
// 返回
return startStop
}
/**
* **得到本半年开始的月份**
* @param month 需要计算的月份
***/
function getYearStartMonth(month) {
// var quarterMonthStart = 0
var up = 0 // 上
var down = 6 // 下
// 月份从0-11

if (month < 6) {
return up
}else{
return down
}
}
/**
* **获得本半年的起止日期**
*/
function getHalfYearSeason() {
// 起止日期数组
var startStop = []
// 获取当前时间
var currentDate = getCurrentDate()
// 获得当前月份0-11
var currentMonth = currentDate.getMonth()
// 获得当前年份4位年
var currentYear = currentDate.getFullYear()
// 获得本季度开始月份
var quarterSeasonStartMonth = getYearStartMonth(currentMonth)
// 获得本季度结束月份
var quarterSeasonEndMonth = quarterSeasonStartMonth + 5

// 获得本季度开始的日期
var quarterSeasonStartDate = new Date(currentYear, quarterSeasonStartMonth, 1)
// 获得本季度结束的日期
var quarterSeasonEndDate = new Date(currentYear, quarterSeasonEndMonth, getMonthDays(currentYear, quarterSeasonEndMonth))
// 加入数组返回
startStop.push(formatDate(quarterSeasonStartDate))
startStop.push(formatDate(quarterSeasonEndDate))
// 返回
return startStop
}
/**
* **获得本季度的起止日期**
*/
function getCurrentSeason() {
// 起止日期数组
var startStop = []
// 获取当前时间
var currentDate = getCurrentDate()
// 获得当前月份0-11
var currentMonth = currentDate.getMonth()
// 获得当前年份4位年
var currentYear = currentDate.getFullYear()
// 获得本季度开始月份
var quarterSeasonStartMonth = getQuarterSeasonStartMonth(currentMonth)
// 获得本季度结束月份
var quarterSeasonEndMonth = quarterSeasonStartMonth + 2

// 获得本季度开始的日期
var quarterSeasonStartDate = new Date(currentYear, quarterSeasonStartMonth, 1)
// 获得本季度结束的日期
var quarterSeasonEndDate = new Date(currentYear, quarterSeasonEndMonth, getMonthDays(currentYear, quarterSeasonEndMonth))
// 加入数组返回
startStop.push(formatDate(quarterSeasonStartDate))
startStop.push(formatDate(quarterSeasonEndDate))
// 返回
return startStop
}
/**
* **获得本月的起止日期**
*/
function getMonthEndDate() {
// 起止日期数组
var startStop = []
// 获取当前时间
var currentDate = getCurrentDate()
// 获得当前月份0-11
var currentMonth = currentDate.getMonth()
// 获得当前年份4位年
var currentYear = currentDate.getFullYear()
//当前日
var nowDay = currentDate.getDate();

var monthStartDate = new Date(currentYear, currentMonth, 1);
var monthEndDate = new Date(currentYear, currentMonth, getMonthDays(currentMonth, currentMonth));
// 加入数组返回
startStop.push(formatDate(monthStartDate))
startStop.push(formatDate(monthEndDate))
// 返回
return startStop
}
/**
* **获得本周的起止日期**
*/
function getWeekDate() {
// 起止日期数组
var startStop = []
// 获取当前时间
var currentDate = getCurrentDate()
// 获得当前月份0-11
var currentMonth = currentDate.getMonth()
// 获得当前年份4位年
var currentYear = currentDate.getFullYear()
//今天本周的第几天
var nowDayOfWeek = currentDate.getDay();
//当前日
var nowDay = currentDate.getDate();

var weekStartDate = new Date(currentYear, currentMonth, nowDay - nowDayOfWeek + 1);
var weekEndDate = new Date(currentYear, currentMonth, nowDay + (6 - nowDayOfWeek) + 1);
// 加入数组返回
startStop.push(formatDate(weekStartDate))
startStop.push(formatDate(weekEndDate))
// 返回
return startStop
}
/**
* **获得本日的起止日期**
*/
function getDayDate() {
// 起止日期数组
var startStop = []
// 获取当前时间
var currentDate = getCurrentDate()
// 加入数组返回
startStop.push(formatDate(currentDate))
startStop.push(formatDate(currentDate))
// 返回
return startStop
}

function getStartEnd(index){
var startStop = []
switch(index) {
case 0:
startStop=getDayDate()
break;
case 1:
startStop=getWeekDate()
break;
case 2:
startStop=getMonthEndDate()
break;
case 3:
startStop=getCurrentSeason()
break;
case 4:
startStop=getHalfYearSeason()
break;
case 5:
startStop=getCurrentYear()
break;
default:
}
return startStop;
}

//本日
//本周
//本月
//本季度
//本半年
//本年
console.log(getCurrentYear());
console.log(getHalfYearSeason());
console.log(getCurrentSeason());
console.log(getMonthEndDate());
console.log(getWeekDate());
console.log(getDayDate());
console.log(getStartEnd(1));
</script>

原文地址:https://www.cnblogs.com/liangbo-/p/14582715.html