| 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); | 
| }; |