123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- export default {
- // 当某月的天数
- getDaysInOneMonth(date) {
- const year = date.getFullYear();
- const month = date.getMonth() + 1;
- const d = new Date(year, month, 0);
- return d.getDate();
- },
- // 向前空几个
- getMonthweek(date) {
- const year = date.getFullYear();
- const month = date.getMonth() + 1;
- const dateFirstOne = new Date(year + '/' + month + '/1');
- return this.sundayStart ?
- dateFirstOne.getDay() == 0 ? 7 : dateFirstOne.getDay() :
- dateFirstOne.getDay() == 0 ? 6 : dateFirstOne.getDay() - 1;
- },
- /**
- * 获取当前日期上个月或者下个月
- */
- getOtherMonth(date, str = 'nextMonth') {
- const timeArray = this.dateFormat(date).split('/');
- const year = timeArray[0];
- const month = timeArray[1];
- const day = timeArray[2];
- let year2 = year;
- let month2;
- if (str === 'nextMonth') {
- month2 = parseInt(month) + 1;
- if (month2 == 13) {
- year2 = parseInt(year2) + 1;
- month2 = 1;
- }
- } else {
- month2 = parseInt(month) - 1;
- if (month2 == 0) {
- year2 = parseInt(year2) - 1;
- month2 = 12;
- }
- }
- let day2 = day;
- const days2 = new Date(year2, month2, 0).getDate();
- if (day2 > days2) {
- day2 = days2;
- }
- if (month2 < 10) {
- month2 = '0' + month2;
- }
- if (day2 < 10) {
- day2 = '0' + day2;
- }
- const t2 = year2 + '/' + month2 + '/' + day2;
- return new Date(t2);
- },
- // 上个月末尾的一些日期
- getLeftArr(date) {
- const arr = [];
- const leftNum = this.getMonthweek(date);
- const num = this.getDaysInOneMonth(this.getOtherMonth(date, 'preMonth')) - leftNum + 1;
- const preDate = this.getOtherMonth(date, 'preMonth');
- // 上个月多少开始
- for (let i = 0; i < leftNum; i++) {
- const nowTime = preDate.getFullYear() + '/' + (preDate.getMonth() + 1) + '/' + (num + i);
- arr.push({
- id: num + i,
- date: nowTime,
- isToday: false,
- otherMonth: 'preMonth',
- });
- }
- return arr;
- },
- // 下个月末尾的一些日期
- getRightArr(date) {
- const arr = [];
- const nextDate = this.getOtherMonth(date, 'nextMonth');
- const leftLength = this.getDaysInOneMonth(date) + this.getMonthweek(date);
- const _length = 7 - leftLength % 7;
- for (let i = 0; i < _length; i++) {
- const nowTime = nextDate.getFullYear() + '/' + (nextDate.getMonth() + 1) + '/' + (i + 1);
- arr.push({
- id: i + 1,
- date: nowTime,
- isToday: false,
- otherMonth: 'nextMonth',
- });
- }
- return arr;
- },
- // format日期
- dateFormat(date) {
- date = typeof date === 'string' ? new Date(date.replace(/\-/g, '/')) : date;
- return date.getFullYear() + '/' + (date.getMonth() + 1) + '/'
- + date.getDate();
- },
- // 获取某月的列表不包括上月和下月
- getMonthListNoOther(date) {
- const arr = [];
- const num = this.getDaysInOneMonth(date);
- const year = date.getFullYear();
- const month = date.getMonth() + 1;
- const toDay = this.dateFormat(new Date());
- for (let i = 0; i < num; i++) {
- const nowTime = year + '/' + month + '/' + (i + 1);
- arr.push({
- id: i + 1,
- date: nowTime,
- isToday: toDay === nowTime,
- otherMonth: 'nowMonth',
- });
- }
- return arr;
- },
- // 获取某月的列表 用于渲染
- getMonthList(date) {
- return [ ...this.getLeftArr(date), ...this.getMonthListNoOther(date), ...this.getRightArr(date) ];
- },
- // 默认是周一开始
- sundayStart: false,
- };
|