export const getDateRect = (date) => { const _date = new Date(date); return { year: _date.getFullYear(), month: _date.getMonth(), date: _date.getDate(), day: _date.getDay(), time: _date.getTime(), }; }; export const isSameDate = (date1, date2) => { if (date1 instanceof Date || typeof date1 === 'number') date1 = getDateRect(date1); if (date2 instanceof Date || typeof date2 === 'number') date2 = getDateRect(date2); const keys = ['year', 'month', 'date']; return keys.every((key) => date1[key] === date2[key]); }; export const getMonthDateRect = (date) => { const { year, month } = getDateRect(date); const firstDay = new Date(year, month, 1); const weekdayOfFirstDay = firstDay.getDay(); const lastDate = new Date(+new Date(year, month + 1, 1) - 24 * 3600 * 1000).getDate(); return { year, month, weekdayOfFirstDay, lastDate, }; }; export const isValidDate = (val) => typeof val === 'number' || val instanceof Date; export const getDate = (...args) => { const now = new Date(); if (args.length === 0) return now; if (args.length === 1 && args[0] <= 1000) { const { year, month, date } = getDateRect(now); return new Date(year, month + args[0], date); } return Date.apply(null, args); };