@dtinsight/dt-utils
Version:
110 lines (109 loc) • 4.18 kB
TypeScript
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;