@ivujs/i-utils
Version:
前端模块化 JavaScript 工具库
638 lines (637 loc) • 22.7 kB
TypeScript
/**
日期配置类型
@param format 日期格式字符串,支持的占位符如下:
| 占位符 | 说明 | 示例(2025-01-05 08:05:08 周一) |
|--------|-----------------------|---------------------------------|
| yyyy | 4 位年份 | 2025 |
| yy | 2 位年份 | 25 |
| MM | 2 位月份(补 0) | 01 |
| M | 1 位月份(不补 0) | 1 |
| dd | 2 位日期(补 0) | 05 |
| d | 1 位日期(不补 0) | 5 |
| HH | 24 小时制(2 位,补 0) | 08 |
| H | 24 小时制(1 位,不补 0)| 8 |
| hh | 12 小时制(2 位,补 0) | 08 |
| h | 12 小时制(1 位,不补 0)| 8 |
| mm | 2 位分钟(补 0) | 05 |
| m | 1 位分钟(不补 0) | 5 |
| ss | 2 位秒数(补 0) | 08 |
| s | 1 位秒数(不补 0) | 8 |
| SSS | 3 位毫秒(补 0) | 123 |
| S | 1 位毫秒(不补 0) | 1 |
| E | 周几(迷你名) | 一(zh) / Mon(en) |
| EE | 周几(短名) | 周一(zh) / Mon(en) |
| EEE | 周几(全名) | 星期一(zh) / Monday(en) |
| Q | 季度(迷你名) | 1(zh) / 1(en) |
| QQ | 季度(短名) | Q1(zh) / Q1(en) |
| QQQ | 季度(全名) | 第一季度(zh) / Quarter 1(en)|
| a | 上午 / 下午(小写) | am /pm |
| A | 上午 / 下午(大写) | AM / PM |
| aa | 上午 / 下午(中文) | 上午 / 下午 |
| AA | 上午 / 下午(中文大写) | 上午 / 下午 |
@example
yyyy-MM-dd HH:mm:ss → 2025-01-05 08:05:08
yyyy-M-d h:m:s → 2025-1-5 8:5:8
yyyy-MM-dd EE → 2025-01-05 周一
@param lang 语言,可选值:zh(默认)/ en
*/
export interface DateOptions {
format?: string;
lang?: string;
}
/**
* 今天
*@returns {string} 返回日期字符串
*/
export declare function today(): string;
/**
* 昨天
* @returns {string} 返回日期字符串
*/
export declare function yesterday(): string;
/**
* 明天
*@returns {string} 返回日期字符串
*/
export declare function tomorrow(): string;
/**
* 上周(7天前日期)
* @param {Date} date 日期参数,默认当前日期
* @returns {string} 返回日期字符串
*/
export declare function lastWeek(date?: Date): string;
/**
* 下周(7天后日期)
* @param {Date} date 日期参数,默认当前日期
* @returns {string} 返回日期字符串
*/
export declare function nextWeek(date?: Date): string;
/**
* 上个月(30天前日期)
* @param {Date} date 日期参数,默认当前日期
* @returns {string} 返回日期字符串
*/
export declare function lastMonth(date?: Date): string;
/**
* 下个月(30天后日期)
* @param {Date} date 日期参数,默认当前日期
* @returns {string} 返回日期字符串
*/
export declare function nextMonth(date?: Date): string;
/**
* 上一年(365天前日期)
* @param {Date} date 日期参数,默认当前日期
* @returns {string} 返回日期字符串
*/
export declare function lastYear(date?: Date): string;
/**
* 下一年(365天后日期)
* @param {Date} date 日期参数,默认当前日期
* @returns {string} 返回日期字符串
*/
export declare function nextYear(date?: Date): string;
/**
* 是否为上午
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isAM(date?: Date): boolean;
/**
* 是否为下午
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isPM(date?: Date): boolean;
/**
* 是否为今天
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isToday(date?: Date): boolean;
/**
* 是否为昨天
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isYesterday(date?: Date): boolean;
/**
* 是否为前天
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isBeforeYesterday(date?: Date): boolean;
/**
* 是否为明天
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isTomorrow(date?: Date): boolean;
/**
* 是否为后天
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isAfterTomorrow(date?: Date): boolean;
/**
* 是否为工作日
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isWorkday(date?: Date): boolean;
/**
* 是否为周末(周六和周日)
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isWeekend(date?: Date): boolean;
/**
* 是否为本周第一天
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isFirstDayOfWeek(date?: Date): boolean;
/**
* 是否为本周最后一天
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isLastDayOfWeek(date?: Date): boolean;
/**
* 是否为本月第一天
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isFirstDayOfMonth(date?: Date): boolean;
/**
* 是否为本月最后一天
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isLastDayOfMonth(date?: Date): boolean;
/**
* 是否为本年第一天
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isFirstDayOfYear(date?: Date): boolean;
/**
* 是否为本年最后一天
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isLastDayOfYear(date?: Date): boolean;
/**
* 是否为闰年
* @description 闰年366天,平年365天
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isLeapYear(date?: Date): boolean;
/**
* 是否为平年
* @description 闰年366天,平年365天
* @param {Date} date 日期参数,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isCommonYear(date?: Date): boolean;
/**
* 是否在日期之前
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isBefore(startDate: Date, endDate?: Date): boolean;
/**
* 是否在日期之后
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期,默认当前日期
* @returns {boolean} 返回结果
*/
export declare function isAfter(startDate: Date, endDate?: Date): boolean;
/**
* 是否在两个日期之间
* @param {Date} date 要比较的日期
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期
* @returns {boolean} 返回结果
*/
export declare function isBetween(date: Date, startDate: Date, endDate: Date): boolean;
/**
* 两个日期是否为同一天
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期
* @returns {boolean} 返回结果
*/
export declare function isSame(startDate: Date, endDate: Date): boolean;
/**
* 两个日期是否为同一周
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期
* @returns {boolean} 返回结果
*/
export declare function isSameWeek(startDate: Date, endDate: Date): boolean;
/**
* 两个日期是否为同一个月
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期
* @returns {boolean} 返回结果
*/
export declare function isSameMonth(startDate: Date, endDate: Date): boolean;
/**
* 两个日期是否为同一年
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期
* @returns {boolean} 返回结果
*/
export declare function isSameYear(startDate: Date, endDate: Date): boolean;
/**
* 两个日期是否相同或之前
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期
* @returns {boolean} 返回结果
*/
export declare function isSameOrBefore(startDate: Date, endDate: Date): boolean;
/**
* 两个日期是否相同或之后
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期
* @returns {boolean} 返回结果
*/
export declare function isSameOrAfter(startDate: Date, endDate: Date): boolean;
/**
* 获得此刻的日期
* @returns {Date} 返回日期
*/
export declare function getNow(): Date;
/**
* 获得当前日期字符串
* @param {Date} date 日期参数,默认当前日期
* @param options 配置项 配置项
* @returns {string} 返回日期字符串
*/
export declare function getDate(date?: Date, options?: DateOptions): string;
/**
* 获得当前日期时间字符串
* @param {Date} date 日期参数,默认当前日期
* @param options 配置项 配置项
* @returns {string} 返回日期时间字符串
*/
export declare function getDateTime(date?: Date, options?: DateOptions): string;
/**
* 获取当前时间戳
* @param {Date} date 日期参数,默认当前日期
* @returns {number} 返回时间戳
*/
export declare function getTimestamp(date?: Date): number;
/**
* 获取当前Unix时间戳
* @param {Date} date 日期参数,默认当前日期
* @returns {number} 返回Unix时间戳
*/
export declare function getUnixTimestamp(date?: Date): number;
/**
* 获得当前日期的对象形式
* @param {Date} date 日期参数,默认当前日期
* @returns {Object} 返回日期的对象形式
*/
export declare function getDateObject(date?: Date): {
year: number;
month: number;
date: number;
hours: number;
minutes: number;
seconds: number;
milliseconds: number;
};
/**
* 获得当前日期的数组形式
* @param {Date} date 日期参数,默认当前日期
* @returns {Object} 返回日期的数组形式
*/
export declare function getDateArray(date?: Date): number[];
/**
* 获得当前日期是周几
* @param {Date} date 日期参数,默认当前日期
* @param options 配置项
* @returns {number|string} 返回周几,会根据语言返回
*/
export declare function getWeek(date?: Date, options?: DateOptions): number | string;
/**
* 获得当前日期是第几季度
* @param {Date} date 日期参数,默认当前日期
* @param options 配置项
* @returns {number|string} 返回第几季度,会根据语言返回
*/
export declare function getQuarter(date?: Date, options?: DateOptions): number | string;
/**
* 获得当前日期是所在周的第几天
* @param {Date} date 日期参数,默认当前日期
* @returns {number|string} 返回天数
*/
export declare function getDayOfWeek(date?: Date): number | string;
/**
* 获得当前日期是所在月的第几天
* @param {Date} date 日期参数,默认当前日期
* @returns {number} 返回天数
*/
export declare function getDayOfMonth(date?: Date): number;
/**
* 获得当前日期是所在年的第几天
* @param {Date} date 日期参数,默认当前日期
* @returns {number} 返回天数
*/
export declare function getDayOfYear(date?: Date): number;
/**
* 获得当前日期是所在月的第几周
* @param {Date} date 日期参数,默认当前日期
* @returns {number} 返回周数
*/
export declare function getWeekOfMonth(date?: Date): number;
/**
* 获得当前日期是所在年的第几周
* @param {Date} date 日期参数,默认当前日期
* @returns {number} 返回周数
*/
export declare function getWeekOfYear(date?: Date): number;
/**
* 获得当前日期所在的周共几天
* @returns {number} 返回天数
*/
export declare function getDaysOfWeek(): number;
/**
* 获得当前日期所在的月共几天
* @param {Date} date 日期参数,默认当前日期
* @returns {number} 返回天数
*/
export declare function getDaysOfMonth(date?: Date): number;
/**
* 获得当前日期所在的年共几天
* @param {Date} date 日期参数,默认当前日期
* @returns {number} 返回天数
*/
export declare function getDaysOfYear(date?: Date): number;
/**
* 获得当前日期是所在月的第几周
* @param {Date} date 日期参数,默认当前日期
* @returns {number} 返回周数
*/
export declare function getWeeksOfMonth(date?: Date): number;
/**
* 获得当前日期是所在年的第几周
* @param {Date} date 日期参数,默认当前日期
* @returns {number} 返回周数
*/
export declare function getWeeksOfYear(date?: Date): number;
/**
* 获得当前日期所在周的第一天
* @param {Date} date 日期参数,默认当前日期
* @returns {string} 返回日期字符串
*/
export declare function getFirstDateOfWeek(date?: Date): string;
/**
* 获得当前日期所在周的最后一天
* @param {Date} date 日期参数,默认当前日期
* @returns {string} 返回日期字符串
*/
export declare function getLastDateOfWeek(date?: Date): string;
/**
* 获取当前日期所在周的所有日期
* @param {Date} date 日期参数,默认当前日期
* @returns {string[]} 返回日期数组
*/
export declare function getFullDateOfWeek(date?: Date): string[];
/**
* 获得当前日期所在月的第一天
* @param {Date} date 日期参数,默认当前日期
* @returns {string} 返回日期字符串
*/
export declare function getFirstDateOfMonth(date?: Date): string;
/**
* 获得当前日期所在月的最后一天
* @param {Date} date 日期参数,默认当前日期
* @returns {string} 返回日期字符串
*/
export declare function getLastDateOfMonth(date?: Date): string;
/**
* 获取当前日期所在月的所有日期
* @param {Date} date 日期参数,默认当前日期
* @returns {string[]} 返回日期数组
*/
export declare function getFullDateOfMonth(date?: Date): string[];
/**
* 获取当前日期所在年的第一天
* @param {Date} date 日期参数,默认当前日期
* @returns {string} 返回日期字符串
*/
export declare function getFirstDateOfYear(date?: Date): string;
/**
* 获取当前日期所在年的最后一天
* @param {Date} date 日期参数,默认当前日期
* @returns {string} 返回日期字符串
*/
export declare function getLastDateOfYear(date?: Date): string;
/**
* 获取当前日期所在年的所有日期
* @param {Date} date 日期参数,默认当前日期
* @returns {string} 返回日期字符串
*/
export declare function getFullDateOfYear(date?: Date): string[];
/**
* 计算两个日期相差的天数,不满一天为0
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期
* @returns {number} 返回两个日期相差的天数,结果为正数或者负数
*/
export declare function getDiffDay(startDate: Date, endDate: Date): number;
/**
* 计算两个日期相差的周数,不满一周为0
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期
* @returns {number} 返回两个日期相差的周数,结果为正数或者负数
*/
export declare function getDiffWeek(startDate: Date, endDate: Date): number;
/**
* 计算两个日期相差的月数,不满一月为0
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期
* @returns {number} 返回两个日期相差的月数,结果为正数或者负数
*/
export declare function getDiffMonth(startDate: Date, endDate: Date): number;
/**
* 计算两个日期相差的年数,不满一年为0
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期
* @returns {number} 返回两个日期相差的年数,结果为正数或者负数
*/
export declare function getDiffYear(startDate: Date, endDate: Date): number;
/**
* 获得两个日期之间的年月日数组
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期
* @returns {Array} 返回年月日数组
*/
export declare function getBetweenDates(startDate: Date, endDate: Date): string[];
/**
* 获得两个日期之间的年月数组
* @description 支持:日期字符串,日期对象,时间戳,Unix时间戳
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期
* @returns {Array} 返回年月数组
*/
export declare function getBetweenMonths(startDate: Date, endDate: Date): string[];
/**
* 获得两个日期之间的年数组
* @param {Date} startDate 开始日期
* @param {Date} endDate 结束日期
* @returns {Array} 返回年数组
*/
export declare function getBetweenYears(startDate: Date, endDate: Date): number[];
/**
* 获得过去时间的字符串显示
* @description 例如:刚刚,1分钟前,1小时前等
* @param {Date} date 日期参数
* @param options 配置项
* @returns {string} 返回字符串
*/
export declare function getPastTime(date: Date, options?: DateOptions): string;
/**
* 获得剩余时间的字符串显示
* @description 例如:1天10小时20分钟30秒
* @param {Date} date 日期参数
* @param options 配置项
* @returns {string} 返回字符串
*/
export declare function getOverTime(date: Date, options?: DateOptions): string;
/**
* 通过日期获得年龄
* @param {Date} date 日期参数
* @returns {number} 返回周岁年龄
*/
export declare function getAge(date: Date): number;
/**
* 通过日期获得星座
* @param {Date} date 日期参数
* @param options 配置项
* @returns {string} 返回星座
*/
export declare function getZodiac(date: Date, options?: DateOptions): string;
/**
* 通过日期获得生肖
* @param {Date} date 日期参数
* @param options 配置项
* @returns {string} 返回生肖
*/
export declare function getChineseZodiac(date: Date, options?: DateOptions): string;
/**
* 日期加减年
* @param {Date} date 日期参数,默认当前日期
* @param {number} num 加减数量,用正数和负数表示;默认+1
* @returns {Date} 返回加减后的日期
*/
export declare function addYear(date?: Date, num?: number): Date;
/**
* 日期加减月
* @param {Date} date 日期参数,默认当前日期
* @param {number} num 加减数量,用正数和负数表示;默认+1
* @returns {Date} 返回加减后的日期
*/
export declare function addMonth(date?: Date, num?: number): Date;
/**
* 日期加减天
* @param {Date} date 日期参数,默认当前日期
* @param {number} num 加减数量,用正数和负数表示;默认+1
* @returns {Date} 返回加减后的日期
*/
export declare function addDate(date?: Date, num?: number): Date;
/**
* 日期加减小时
* @param {Date} date 日期参数,默认当前日期
* @param {number} num 加减数量,用正数和负数表示;默认+1
* @returns {Date} 返回加减后的日期
*/
export declare function addHours(date?: Date, num?: number): Date;
/**
* 日期加减分钟
* @param {Date} date 日期参数,默认当前日期
* @param {number} num 加减数量,用正数和负数表示;默认+1
* @returns {Date} 返回加减后的日期
*/
export declare function addMinutes(date?: Date, num?: number): Date;
/**
* 日期加减秒
* @param {Date} date 日期参数,默认当前日期
* @param {number} num 加减数量,用正数和负数表示;默认+1
* @returns {Date} 返回加减后的日期
*/
export declare function addSeconds(date?: Date, num?: number): Date;
/**
* 日期加减毫秒
* @param {Date} date 日期参数,默认当前日期
* @param {number} num 加减数量,用正数和负数表示;默认+100
* @returns {Date} 返回加减后的日期
*/
export declare function addMillisecond(date?: Date, num?: number): Date;
/**
* 日期加减周
* @param {Date} date 日期参数,默认当前日期
* @param {number} num 加减数量,用正数和负数表示;默认+1
* @returns {Date} 返回加减后的日期
*/
export declare function addWeek(date?: Date, num?: number): Date;
/**
* 日期加减季度
* @param {Date} date 日期参数,默认当前日期
* @param {number} num 加减数量,用正数和负数表示;默认+1
* @returns {Date} 返回加减后的日期
*/
export declare function addQuarter(date?: Date, num?: number): Date;
/**
* UTC 日期对象转本地时区日期对象
* @description 将 UTC 时间的 Date 对象转换为本地时间的 Date 对象(时间戳不变,仅调整时区偏移)
* @param {Date} date UTC 日期对象,默认当前 UTC 时间
* @returns {Date} 本地时区日期对象(时间戳 = UTC时间戳 + 时区偏移毫秒数)
* @example
* // UTC时间:2025-01-26 00:00:00
* const utcDate = new Date('2025-01-26T00:00:00Z');
* const localDate = fromDateUTC(utcDate);
* console.log(toDateString(localDate)); // 2025-01-26 08:00:00(北京本地时间)
*/
export declare function fromDateUTC(date?: Date): Date;
/**
* 本地时区日期转 UTC 日期对象
* @description 将本地时间的 Date 对象转换为 UTC 时间的 Date 对象(时间戳不变,仅调整时区偏移)
* @param {Date} date 本地日期对象,默认当前本地时间
* @returns {Date} UTC 日期对象(时间戳 = 本地时间戳 - 时区偏移毫秒数)
* @example
* // 北京本地时间:2025-01-26 08:00:00(东8区)
* const localDate = new Date('2025-01-26 08:00:00');
* const utcDate = toDateUTC(localDate);
* console.log(utcDate.toISOString()); // 2025-01-26T00:00:00.000Z(UTC时间)
*/
export declare function toDateUTC(date?: Date): Date;
/**
* 格式化日期为 UTC 字符串(符合 ISO 8601 标准)
* @description 直接输出 UTC 时间的字符串,无需手动转换时区
* @param {Date} date 本地日期对象,默认当前本地时间
* @param {DateOptions} options 格式化配置,默认 yyyy-MM-dd HH:mm:ss
* @returns {string} UTC 日期字符串
* @example
* const localDate = new Date('2025-01-26 08:00:00');
* console.log(toUTCString(localDate)); // 2025-01-26 00:00:00
*/
export declare function toDateUTCString(date?: Date, options?: DateOptions): string;
/**
* 日期字符串转为日期对象
* @description 支持日期字符串,时间戳,Unix时间戳
* @param {string|number} value 日期参数
* @returns {Date} 返回日期对象
*/
export declare function toDate(value: string | number): Date;
/**
* 日期对象转为日期字符串
* @description 支持日期字符串,日期对象,时间戳,unix时间戳
* @param {Date} date 日期参数
* @param options 配置项
* @returns {string} 返回日期字符串
*/
export declare function toDateString(date: Date, options?: DateOptions): string;