UNPKG

@dtinsight/dt-utils

Version:

袋鼠云前端常用工具库

110 lines (109 loc) 4.18 kB
import dayjs from 'dayjs'; /** * @category 枚举 * 日期和时间格式模式的枚举 * 提供标准化的格式标记以实现一致的日期/时间格式化 */ export declare enum DateTimeFormat { /** 表示4位数年份 (例如 2024) */ YEAR = "YYYY", /** 表示2位数年份 (例如 24) */ YEAR_SHORT = "YY", /** 表示带前导零的月份 (01-12) */ MONTH = "MM", /** 表示不带前导零的月份 (1-12) */ MONTH_SHORT = "M", /** 表示完整月份名称 (例如 January) */ MONTH_NAME = "MMMM", /** 表示缩写月份名称 (例如 Jan) */ MONTH_NAME_SHORT = "MMM", /** 表示带前导零的月份中的日期 (01-31) */ DAY = "DD", /** 表示不带前导零的月份中的日期 (1-31) */ DAY_SHORT = "D", /** 表示完整星期几名称 (例如 Monday) */ WEEKDAY = "dddd", /** 表示缩写星期几名称 (例如 Mon) */ WEEKDAY_SHORT = "ddd", /** 表示24小时制带前导零的小时 (00-23) */ HOUR = "HH", /** 表示24小时制不带前导零的小时 (0-23) */ HOUR_SHORT = "H", /** 表示12小时制带前导零的小时 (01-12) */ HOUR_12 = "hh", /** 表示12小时制不带前导零的小时 (1-12) */ HOUR_12_SHORT = "h", /** 表示带前导零的分钟 (00-59) */ MINUTE = "mm", /** 表示不带前导零的分钟 (0-59) */ MINUTE_SHORT = "m", /** 表示带前导零的秒数 (00-59) */ SECOND = "ss", /** 表示不带前导零的秒数 (0-59) */ SECOND_SHORT = "s", /** 表示时区偏移 (例如 +07:00) */ TIMEZONE = "Z", /** 表示ISO格式的时区偏移 (例如 +0700) */ TIMEZONE_ISO = "ZZ", /** 标准日期时间格式 (例如 2024-03-21 15:30:45) */ STANDARD = "YYYY-MM-DD HH:mm:ss", /** ISO 8601兼容格式 (例如 2024-03-21T15:30:45+0700) */ ISO = "YYYY-MM-DDTHH:mm:ssZ", /** 仅日期格式 (例如 2024-03-21) */ DATE = "YYYY-MM-DD", /** 24小时制时间格式 (例如 15:30:45) */ TIME = "HH:mm:ss", /** 带午前/午后的12小时制时间格式 (例如 03:30:45 PM) */ TIME_12 = "hh:mm:ss A", /** 带24小时制时间的日期 (例如 2024-03-21 15:30) */ DATE_TIME = "YYYY-MM-DD HH:mm", /** 带12小时制时间和午前/午后的日期 (例如 2024-03-21 03:30 PM) */ DATE_TIME_12 = "YYYY-MM-DD hh:mm A", /** 完整的ISO日期时间格式 (例如 2024-03-21T15:30:45+0700) */ FULL_DATETIME_ISO = "YYYY-MM-DDTHH:mm:ssZ" } declare type DateTimeInput = string | number | Date | dayjs.Dayjs; declare type FormatPattern = DateTimeFormat | string; /** * 一个日期时间格式化工具,可处理各种输入类型和格式化模式。 * * @category 格式化 * @description * 将日期或时间戳格式化为指定格式的字符串。 * 支持多种输入类型和格式化模式。 * * @param {DateTimeInput} date - 输入日期值,支持多种格式: * - Date对象: new Date() * - 时间戳: 1674633600000 * - ISO字符串: "2023-01-15T14:30:00" * - dayjs对象: dayjs() * @param {FormatPattern} format - 期望的输出格式: * - 使用DateTimeFormat枚举以保持一致的格式化 * - 或提供自定义格式字符串 * @returns {string | dayjs.Dayjs} 格式化后的日期字符串或 dayjs 实例对象 * * @example * ```typescript * import { formatDateTime } from 'dt-utils'; * * // 标准日期格式 * formatDateTime(new Date(), DateTimeFormat.STANDARD) // "2024-03-21 15:30:45" * * // 从时间戳格式化 * formatDateTime(1674633600000, DateTimeFormat.DATE_TIME) // "2023-01-25 10:00" * * // 格式化月份名称 * formatDateTime("2023-01-15", DateTimeFormat.MONTH_NAME) // "January" * * // 12小时制时间格式 * formatDateTime(new Date(), DateTimeFormat.TIME_12) // "03:30:45 PM" * * // 完整星期几名称 * formatDateTime(new Date(), DateTimeFormat.WEEKDAY) // "Thursday" * * // 自定义格式 * formatDateTime(new Date(), "dddd, MMMM D, YYYY") // dayjs.Dayjs * ``` */ export declare const formatDateTime: (date: DateTimeInput, format?: FormatPattern) => string | dayjs.Dayjs; export default formatDateTime;