说在前面:最近工作中要求绘制日历,需要对日期做一些处理,下面是一些简单的处理方法,总结一下,顺便也分享给需要的人,如果有写的不好的或有问题的,欢迎留言或私信我指出;另外有一些日期处理的库Monentjs、dayjs(github),大家也可以去看看。
1、指定日期是否是有效日期
/**
* 指定日期是否是有效日期
* @param dateSrc 日期源
*/
isDate(dateSrc) {
return !!(dateSrc && new Date(dateSrc).toString() !== 'Invalid Date');
},
2.获取指定年份的天数
/**
* 获取指定年份的天数
* @param year 年份
* @return {number}
*/
getDayCountOfYear(year) {
// 是否是闰年
const isLeapYear = year % 400 === 0 || (year % 100 !== 0 && year % 4 === 0);
return isLeapYear ? 366 : 365;
},
3、获取指定年指定月的天数
/**
* 获取指定年指定月的天数
* @param year 年份
* @param month 月份
* @return {number}
*/
getDayCountOfMonth(year, month) {
if (month === 3 || month === 5 || month === 8 || month === 10) {
return 30;
}
if (month === 1) {
if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
return 29;
}
return 28;
}
return 31;
},
4、根据指定日期获取星期几
说明:方法中的isDate方法为第一点
/**
* 根据指定日期获取星期几
* @param dateSrc 日期源
* @param hasWeek 是否带周字(0表不带,1表带)
* @returns {string}
*/
getWeek(dateSrc, hasWeek) {
hasWeek = hasWeek || 0;
if (isDate(dateSrc)) {
const date = new Date(dateSrc);
const weekDay = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
const weekNoDay = ['日', '一', '二', '三', '四', '五', '六'];
return hasWeek === 1 ? weekDay[date.getDay()] : weekNoDay[date.getDay()];
}
return '';
},
5、获取指定日期前后nDay天的日期
/**
* 获取指定日期前后nDay天的日期
* @param dateStr 指定日期
* @param nDay 前后nDay,正数代表往后,负数代表往前
*/
getDateStr(dateStr, nDay) {
const currDate = new Date(dateStr);
currDate.setDate(currDate.getDate() + nDay);// 获取AddDayCount天后的日期
return new Date(currDate);
},
6、获取指定日期所在周的星期一
说明:方法中的isDate方法为第一点
/**
* 获取指定日期所在周的星期一
* @param dateSrc 指定日期
*/
getMonday(dateSrc) {
if (isDate(dateSrc)) {
const dateFormat = new Date(dateSrc);
const week = dateFormat.getDay(); // 获取时间的星期数
const minus = week ? week - 1 : 6;
dateFormat.setDate(dateFormat.getDate() - minus); // 获取minus天前的日期
return dateFormat;
}
return '';
},
7、获取指定日期所在周的星期日
说明:方法中的isDate方法为第一点
/**
* 获取指定日期所在周的星期日
* @param dateSrc 指定日期
*/
getSunday(dateSrc) {
if (isDate(dateSrc)) {
const dateFormat = new Date(dateSrc);
const week = dateFormat.getDay(); // 获取时间的星期数
const minus = week ? 7 - week : 0;
dateFormat.setDate(dateFormat.getDate() + minus); // 获取minus天前的日期
return dateFormat;
}
return '';
},
写在最后,持续更新中...