declare namespace DateUtil { /** * 将 字符串/时间戳 解析成日期对象 * @param {Date | String | Number} date 输入的日期字符串,如'2014-09-13',或者时间戳 * @param {String} format 字符串格式,默认'yyyy-MM-dd',支持如下:y、M、d、H、m、s、S * @returns {Date} 解析后的Date对象 * @throws 如果传入的 date 参数不符合要求的类型,则抛出 TypeError 错误 * * @example * parseDate('2018-11-26'); => new Date(2018, 10, 26) * parseDate('11/26/2018', 'MM/dd/yyyy') => new Date(2018, 10, 26) * parseDate('2018-11-26 13:28:43', 'yyyy-MM-dd HH:mm:ss') => new Date(2018, 10, 26, 13, 28, 43) * parseDate('2018年11月26日', 'yyyy年MM月dd日') => new Date(2018, 10, 26) * parseDate('2018年11月26日 11时40分', 'yyyy年MM月dd日 HH时mm分') => new Date(2018, 10, 26, 11, 40) */ const parseDate: (date: Date | string | number, format?: string) => Date; /** * 将日期格式化成指定格式的字符串 * @param {Date | Number | String} date 要格式化的日期,不传时默认当前时间,也可以是一个时间戳/字符串 * @param {String} format 目标字符串格式,支持的字符有:y,M,d,q,w,H,h,m,S,默认:yyyy-MM-dd HH:mm:ss * @returns {String} 返回格式化后的日期字符串,日期不合法时返回字符串 'invalid date' * @example * formatDate(); => 2016-09-02 13:17:13 * formatDate('2016-09-02','yyyy年MM月dd日'); => 2016年09月02日 * formatDate(new Date(), 'yyyy-MM-dd'); => 2016-09-02 * formatDate(new Date(), 'yyyy-MM-dd 第q季度 www HH:mm:ss:SSS'); => 2016-09-02 第3季度 星期五 13:19:15:792 * formatDate(1472793615764); => 2016-09-02 13:20:15 */ const formatDate: (date?: Date | number | string, format?: string) => string; /** * 将一个日期格式化成友好格式,比如,1分钟以内的返回“刚刚”, * 当天的返回时分,当年的返回月日,否则,返回年月日 * @param {Date | number} date 如: new Date('2017-11-11') * @returns {string} 解析后的友好化日期格式 * @example * formatDateToFriendly() => 刚刚 */ const formatDateToFriendly: (date?: Date | number) => string; /** * 获取日期对应的时间戳 * @param {Date | String} date 日期对象/日期字符串 * @param {String} format 字符串模板(date参数为字符串时有效) * @returns {Number} 时间戳(单位:毫秒) 如果date参数不合法,则返回-1 * @example * timestamp() => 1610625880136 */ const timestamp: (date?: Date | string, format?: string) => number; interface IDateDiff { year?: number; month?: number; week?: number; day?: number; hour?: number; minute?: number; second?: number; millsecond?: number; } /** * 计算指定日期往前推指定时间 * @param {Date | string | number} date 初始日期,支持 Date 对象、日期字符串(需配合format参数)、时间戳 * @param {IDateDiff} diff 日期差值,支持年、月、日、周、时、分、秒、毫秒 * @param {string} format 日期格式字符串 * @example * dateBefore(new Date(),{year:1}) => Tue Jan 14 2020 20:21:26 GMT+0800 (中国标准时间) */ const dateBefore: (date: Date | string | number, diff: IDateDiff, format?: string) => Date; /** * 计算指定日期往后推指定时间 * @param {Date | string | number} date 初始日期,支持 Date 对象、日期字符串(需配合format参数)、时间戳 * @param {IDateDiff} diff 日期差值,支持年、月、日、周、时、分、秒、毫秒 * @param {string} format 日期格式字符串 * @example * dateAfter(new Date(),{year:1}) => Tue Jan 14 2022 20:21:26 GMT+0800 (中国标准时间) */ const dateAfter: (date: Date | string | number, diff: IDateDiff, format?: string) => Date; enum DiffDirection { Before = 0, After = 1 } /** * 判断是否为闰年 * @param {Number} year 年份 * * @example * isLeapYear(1900) = false * isLeapYear(2000) = true * isLeapYear(2001) = false * isLeapYear(2004) = true */ const isLeapYear: (year: number) => boolean; /** * 计算在给定的年份中,给定的月份有多少天(会自动判断是否为闰年) * @param {Number} year 年份 * @param {Number} month 月份 (0-11) * @example * getDaysInMonth(2012,2) => 31 */ const getDaysInMonth: (year: number, month: number) => number; enum TimeDimension { Year = 0, Month = 1, Week = 2, Date = 3, Hour = 4, Minute = 5, Second = 6 } interface IDatePart { Year: number; Month: number; Date: number; Day: number; Hour: number; Minute: number; Second: number; Millsecond: number; } /** * 获取时间的开头 * @param date 日期 * @param mode 时间维度 可以使用 Year Month Day Week Hour Minute Second * @param format 字符串模板 * @example * getDateStart(new Date(),TimeDimension.Year) => Fri Jan 01 2021 00:00:00 GMT+0800 (中国标准时间) */ const getDateStart: (date: Date | string | number, mode: TimeDimension, format?: string) => Date; /** * 获取时间的结尾 * @param date 日期 * @param mode 时间维度 可以使用 Year Month Date Week Hour Minute Second * @param format 字符串模板 * @example * getDateEnd(new Date(),TimeDimension.Year) => Fri Dec 31 2021 23:59:59 GMT+0800 (中国标准时间) */ const getDateEnd: (date: Date | string | number, mode: TimeDimension, format?: string) => Date; /** * 获取给定日期所在当年有多少天 * @param {Date | String | Number} date 日期 * @param {String} format 字符串模板 * * @example * getDayOfYear('2018-11-26') => 365 * getDayOfYear('12/20/2019', 'MM/dd/yyyy') => 365 * getDayOfYear('2020-12-20') => 366 */ const getDayCountOfYear: (date: Date | string | number, format?: string) => number; /** * 获取给定日期在当年的第几天 * @param {Date | String | Number} date 日期 * @param {String} format 字符串模板 * * @example * getDayIndexOfYear('2017-01-20') => 20 * getDayIndexOfYear('2018-05-20') => 140 */ const getDayIndexOfYear: (date: Date | string | number, format?: string) => number; /** * 获取给定日期在当年的第几周 * @param {Date | String | Number} date 日期 * @param {String} format 字符串模板 * * @example * getWeekIndexOfYear('2017-01-20') => 3 * getWeekIndexOfYear('2018-05-20') => 20 */ const getWeekIndexOfYear: (date: Date | string | number, format?: string) => number; /** * 获取给定日期在当月的第几周 * @param {Date | String | Number} date 日期 * @param {String} format 字符串模板 * * @example * getWeekIndexOfMonth('2017-01-20') => 3 * getWeekIndexOfMonth('2018-05-20') => 3 */ const getWeekIndexOfMonth: (date: Date | string | number, format?: string) => number; interface ITimeSpan { Day: number; Hour: number; Minute: number; Second: number; Millsecond: number; } /** * 计算两个日期的差 * @param date1 日期1 * @param date2 日期2 * @param format 字符串模板 * @example * getDateDiff('2020-12-12','2021-10-12') => {Day: 304, Hour: 0, Minute: 0, Second: 0, Millsecond: 0} */ const getDateDiff: (date1: Date | string | number, date2: Date | string | number, format?: string) => ITimeSpan; /** * 判断给定日期时间是否在某日期时间之前(默认当前日期时间) * @param {Date | String | Number} date1 日期时间 * @param {Date | String | Number} date2 日期时间(默认当前日期时间) * @param {String} format 字符串模板 * * @example * isTimeBefore('2017-01-20') => true * isTimeBefore('2018-05-20') => true */ const isTimeBefore: (date1: Date | string, date2?: Date | string, format?: string) => boolean; /** * 判断给定日期时间是否在某日期时间之后(默认当前日期时间) * @param {Date | String | Number} date1 日期时间 * @param {Date | String | Number} date2 日期时间(默认当前日期时间) * @param {String} format 字符串模板 * * @example * isTimeAfter('2017-01-20') => false * isTimeAfter('2018-05-20') => false */ const isTimeAfter: (date1: Date | string, date2?: Date | string, format?: string) => boolean; /** * 判断给定日期时间是否在时间段内(默认当前日期时间) * @param { beginTime: Date | string; endTime: Date | string; time?: Date | string } options * @param {String} format 字符串模板 * * @example * const options = {beginTime:'2019-01-01',endTime:'2022-01-01',time:'2021-12-12'} * isTimeExist(options) => true */ const isTimeExist: (options: { beginTime: Date | string; endTime: Date | string; time?: string | Date | undefined; }, format?: string) => boolean; /** * 补全日期区间数组 * @param {string} day1 '2022-01-01' * @param {string} day2 '2022-01-03' * @param {string} outFormat "yyyy-MM-dd" 输出的格式 * @returns ['2022-01-01','2022-01-02','2022-01-03'] */ function getSectionDateList(day1: string, day2: string, outFormat?: string): string[]; /** * 补全月份区间数组 * @param {string} day1 '2022-01' * @param {string} day2 '2022-03' * @param {string} outFormat "yyyy-MM" 输出的格式 * @returns ['2022-01','2022-02','2022-03'] */ const getSectionMonthList: (day1: string, day2: string, outFormat?: string) => string[]; /** * 补全年份区间数组 * @param {string} day1 '2022' * @param {string} day2 '2024' * @returns ['2022','2023','2024'] */ const getSectionYearList: (day1: string, day2: string) => string[]; } export default DateUtil;