Skip to content

日期工具

日期工具提供了一系列用于处理日期和时间的实用函数。

formatDate

将日期格式化为指定的字符串格式。

语法

typescript
function formatDate(date: Date | number | string, format: string): string

参数

参数类型描述
dateDate | number | string要格式化的日期,可以是 Date 对象、时间戳或日期字符串
formatstring格式化模板字符串

格式化标记

标记描述示例
YYYY四位数年份2025
YY两位数年份25
MM两位数月份(01-12)01
M一位数月份(1-12)1
DD两位数日期(01-31)01
D一位数日期(1-31)1
HH两位数小时,24小时制(00-23)13
H一位数小时,24小时制(0-23)13
hh两位数小时,12小时制(01-12)01
h一位数小时,12小时制(1-12)1
mm两位数分钟(00-59)05
m一位数分钟(0-59)5
ss两位数秒钟(00-59)09
s一位数秒钟(0-59)9
SSS三位数毫秒(000-999)078
AAM/PM 标记AM
aam/pm 标记am

返回值

返回格式化后的日期字符串。

示例

javascript
import { formatDate } from 'ft-base-tools';

const date = new Date(2025, 0, 1, 13, 5, 9, 78);

console.log(formatDate(date, 'YYYY-MM-DD')); // 2025-01-01
console.log(formatDate(date, 'YYYY年MM月DD日')); // 2025年01月01日
console.log(formatDate(date, 'HH:mm:ss')); // 13:05:09
console.log(formatDate(date, 'h:m:s a')); // 1:5:9 pm
console.log(formatDate(date, 'YYYY-MM-DD HH:mm:ss.SSS')); // 2025-01-01 13:05:09.078

// 使用时间戳
console.log(formatDate(1735689909078, 'YYYY-MM-DD')); // 2025-01-01

// 使用日期字符串
console.log(formatDate('2025-01-01', 'MM/DD/YYYY')); // 01/01/2025

parseDate

将日期字符串解析为 Date 对象。

语法

typescript
function parseDate(dateString: string, format?: string): Date

参数

参数类型描述
dateStringstring要解析的日期字符串
formatstring可选。日期字符串的格式模板。如果不提供,将尝试自动识别常见格式

返回值

返回解析后的 Date 对象。

示例

javascript
import { parseDate } from 'ft-base-tools';

const date1 = parseDate('2025-01-01');
console.log(date1); // Wed Jan 01 2025 00:00:00

const date2 = parseDate('01/01/2025', 'MM/DD/YYYY');
console.log(date2); // Wed Jan 01 2025 00:00:00

const date3 = parseDate('2025年01月01日', 'YYYY年MM月DD日');
console.log(date3); // Wed Jan 01 2025 00:00:00

addDays

向日期添加指定的天数。

语法

typescript
function addDays(date: Date, days: number): Date

参数

参数类型描述
dateDate原始日期
daysnumber要添加的天数,可以为负数

返回值

返回一个新的 Date 对象,表示添加天数后的日期。

示例

javascript
import { addDays, formatDate } from 'ft-base-tools';

const date = new Date(2025, 0, 1); // 2025-01-01
const newDate = addDays(date, 5);
console.log(formatDate(newDate, 'YYYY-MM-DD')); // 2025-01-06

const prevDate = addDays(date, -5);
console.log(formatDate(prevDate, 'YYYY-MM-DD')); // 2024-12-27

diffDays

计算两个日期之间的天数差异。

语法

typescript
function diffDays(date1: Date, date2: Date): number

参数

参数类型描述
date1Date第一个日期
date2Date第二个日期

返回值

返回两个日期之间的天数差异(绝对值)。

示例

javascript
import { diffDays } from 'ft-base-tools';

const date1 = new Date(2025, 0, 1); // 2025-01-01
const date2 = new Date(2025, 0, 10); // 2025-01-10

const diff = diffDays(date1, date2);
console.log(diff); // 9

isLeapYear

判断指定年份是否为闰年。

语法

typescript
function isLeapYear(year: number): boolean

参数

参数类型描述
yearnumber要判断的年份

返回值

如果是闰年返回 true,否则返回 false。

示例

javascript
import { isLeapYear } from 'ft-base-tools';

console.log(isLeapYear(2024)); // true
console.log(isLeapYear(2025)); // false
console.log(isLeapYear(2000)); // true
console.log(isLeapYear(1900)); // false

getWeekNumber

获取指定日期是一年中的第几周。

语法

typescript
function getWeekNumber(date: Date): number

参数

参数类型描述
dateDate要计算的日期

返回值

返回一个数字,表示该日期是一年中的第几周(1-53)。

示例

javascript
import { getWeekNumber } from 'ft-base-tools';

const date = new Date(2025, 0, 1); // 2025-01-01
const weekNumber = getWeekNumber(date);
console.log(weekNumber); // 1

getRelativeTimeString

获取相对于当前时间的友好字符串表示。

语法

typescript
function getRelativeTimeString(date: Date | number | string, locale?: string): string

参数

参数类型描述
dateDate | number | string要计算的日期
localestring可选。本地化语言代码,默认为 'zh-CN'

返回值

返回一个字符串,表示相对于当前时间的友好描述。

示例

javascript
import { getRelativeTimeString } from 'ft-base-tools';

// 假设当前时间是 2025-01-01 12:00:00
const date1 = new Date(2025, 0, 1, 11, 55); // 5分钟前
console.log(getRelativeTimeString(date1)); // 5分钟前

const date2 = new Date(2024, 11, 31); // 昨天
console.log(getRelativeTimeString(date2)); // 昨天

const date3 = new Date(2024, 11, 25); // 7天前
console.log(getRelativeTimeString(date3)); // 7天前

const date4 = new Date(2025, 0, 2); // 明天
console.log(getRelativeTimeString(date4)); // 明天

// 使用英语
console.log(getRelativeTimeString(date1, 'en-US')); // 5 minutes ago

基于 MIT 许可发布