function getGap(start, end) {
// 根据传入的时间格式自行处理
var date1 = start.slice(0,10)
var date2 = end.slice(0,10)
// 拆分年月日
date1 = date1.split('-')
// 得到月数
date1 = parseInt(date1[0]) * 12 + parseInt(date1[1])
// 拆分年月日
date2 = date2.split('-')
// 得到月数
date2 = parseInt(date2[0]) * 12 + parseInt(date2[1])
// 总共相差多少个月。因为当年1月至当年12月会得到11个月,所以需要+1
var totalMonth = Math.abs(date1 - date2) + 1
// 得到相差的年数
var year = parseInt(totalMonth / 12)
// 计算完年年数,得到剩余的月数
var month = totalMonth % 12
year = year ? year + '年' : ''
month = month ? month + '个月' : ''
var res = `(${year}${month})`
console.log(res)
}
var DateStart = "2016-01-01 00:00:00"
var DateEnd = "2016-12-01 00:00:00"
getGap(DateStart, DateEnd)
function getMonthDaysArray (year, month) {
const WEEK_TABLE = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
// 返回结果
const dayArrays = [];
// 本月总天数
const days = new Date(year, month, 0).getDate();
// 本月第一天周几
const thisMonthFirstDayInWeek = new Date(year, month - 1, 1).getDay();
for (let i = 1; i <= days; i++) {
let weekDayFlag = (thisMonthFirstDayInWeek + i - 1) % 7
dayArrays.push(`${WEEK_TABLE[weekDayFlag]}${month}月${i}日`)
};
return dayArrays;
}
function getCalendar (countOfMonth) {
const thisYear = new Date().getFullYear()
const thisMonth = new Date().getMonth() + 1
let res = []
// 获取若干个月的日历信息
for (let i = 0; i < countOfMonth; i++) {
if (thisMonth + i < 13) {
res = res.concat(getMonthDaysArray(thisYear, thisMonth + i))
} else {
res = res.concat( getMonthDaysArray(thisYear + 1, thisMonth + i - 12) )
}
}
return res
}
console.log(getCalendar(12))["周三4月1日", "周四4月2日", "周五4月3日", "周六4月4日", "周日4月5日", "周一4月6日", "周二4月7日", "周三4月8日", "周四4月9日", "周五4月10日", "周六4月11日", "周日4月12日", "周一4月13日", "周二4月14日", "周三4月15日", "周四4月16日", "周五4月17日", "周六4月18日", "周日4月19日", "周一4月20日", "周二4月21日", "周三4月22日", "周四4月23日", "周五4月24日", "周六4月25日", "周日4月26日", "周一4月27日", "周二4月28日", "周三4月29日", "周四4月30日", "周五5月1日", "周六5月2日", "周日5月3日", "周一5月4日", "周二5月5日", "周三5月6日", "周四5月7日", "周五5月8日", "周六5月9日", "周日5月10日", "周一5月11日", "周二5月12日", "周三5月13日", "周四5月14日", "周五5月15日", "周六5月16日", "周日5月17日", "周一5月18日", "周二5月19日", "周三5月20日", "周四5月21日", "周五5月22日", "周六5月23日", "周日5月24日", "周一5月25日", "周二5月26日", "周三5月27日", "周四5月28日", "周五5月29日", "周六5月30日", "周日5月31日", "周一6月1日", "周二6月2日", "周三6月3日", "周四6月4日", "周五6月5日", "周六6月6日", "周日6月7日", "周一6月8日", "周二6月9日", "周三6月10日", "周四6月11日", "周五6月12日", "周六6月13日", "周日6月14日", "周一6月15日", "周二6月16日", "周三6月17日", "周四6月18日", "周五6月19日", "周六6月20日", "周日6月21日", "周一6月22日", "周二6月23日", "周三6月24日", "周四6月25日", "周五6月26日", "周六6月27日", "周日6月28日", "周一6月29日", "周二6月30日", "周三7月1日", "周四7月2日", "周五7月3日", "周六7月4日", "周日7月5日", "周一7月6日", "周二7月7日", "周三7月8日", "周四7月9日", …]
var date = new Date();
//当前是哪一年
var year = date.getFullYear();
//当前是哪个月,注意这里的月是从0开始计数的
var month = date.getMonth();
//当前月的第一天的日期
var firstDay = new Date(year,month,1);
//第一天是星期几
var weekday = firstDay.getDay();
//求当前月一共有多少天
//new Date(year,month+1,0) : month+1是下一个月,day为0代表的是上一个月的最后一天,即我们所需的当前月的最后一天。
//getDate()则返回这个日期对象是一个月中的第几天,我们由最后一天得知这个月一共有多少天
var days = new Date(year,month+1,0).getDate();
var res = "";
//输出第一天之前的空格
for(var i=0;i<weekday;i++){
res+=" ";
}
for(var j=1;j<=days ;j++){
res += j+" ";
weekday++;
//如果是周日则换行
if(weekday%7 == 0){
weekday = 0;
res += '\n';
}
}