Skip to content

参考

date-fns 常用函数、format token、子模块与时区 API 速查。版本基线 date-fns 4.x。

一、常用函数分组

分组代表函数说明
格式化format · formatISO · formatISO9075 · formatRFC3339 · formatRFC7231Date → 字符串
相对时间formatDistance · formatDistanceToNow · formatDistanceStrict · intlFormatDistance人类可读距离
时长formatDuration · intervalToDurationDuration 渲染 / 计算
解析parse · parseISO · parseJSON字符串 → Date
增减addDays/Months/Years/Hours/Minutes/Weeks · subX · add · sub返回新 Date
差值differenceInDays/Hours/Months/Years/Minutes/Seconds · differenceInCalendarDays · differenceInBusinessDays返回数字
起止startOfDay/Week/Month/Year/Hour · endOfX归一到边界
比较isBefore · isAfter · isEqual · compareAsc · compareDesc顺序判断
同周期isSameDay/Month/Year/Hour/Week是否同一周期
校验isValid · isDate · isWeekend · isFuture · isPast谓词
区间isWithinInterval · areIntervalsOverlapping · eachDayOfInterval · intervalInterval 操作
取值getTime · getUnixTime · getDay · getDaysInMonth · getISOWeek读字段
设值set · setHours/Minutes/Date/Month/Year返回新 Date
取最值min · max · closestTo · closestIndexTo · clamp数组/区间
取整roundToNearestMinutes · roundToNearestHours取整到最近单位

二、format / parse 常用 token(Unicode TR#35)

含义token示例备注
日历年y yy yyyy2024 / 24 / 2024不是 Y
周编号年Y YYYY受保护,需 useAdditionalWeekYearTokens
M MM MMM MMMM2 / 02 / Feb / February
月内日d dd11 / 11不是 D
年内日D DD283受保护,需 useAdditionalDayOfYearTokens
星期E..EEE EEEE EEEEEMon / Monday / M格式型
ISO 星期i ii iii iiii1 / 01 / Mon / Monday周一=1
时(0-23)H HH14 / 14
时(1-12)h hh2 / 02a
分 / 秒m mm / s ss30 / 00
毫秒S SS SSS0 / 00 / 000
AM/PMa aaAM / PM
时区偏移X XX XXXZ / +0530 / +05:30
长本地化日期P PP PPP PPPP按 locale
长本地化时间p pp按 locale

字面量用单引号转义,连续两个单引号 '' 表示一个真正的单引号。

三、format 常用 options

选项含义
locale本地化语言(从 date-fns/locale 具名导入)
weekStartsOn一周第一天:0=周日(默认)…6=周六
firstWeekContainsDate一年的第一周须包含的日期
useAdditionalWeekYearTokens允许使用 YY/YYYY
useAdditionalDayOfYearTokens允许使用 D/DD
in计算/输出所用时区(配 @date-fns/tztz(),v4+)

四、子模块

子模块用途导入示例
date-fns主模块(200+ 函数)import { format } from "date-fns"
date-fns/fp函数式变体(柯里化、参数重排)import { addYears } from "date-fns/fp"
date-fns/locale80+ 语言 localeimport { zhCN } from "date-fns/locale"
date-fns/constants常量(v3 起移出顶层)import { daysInYear } from "date-fns/constants"
js
// fp:柯里化 + 数据在最后,便于组合
import { addYears } from "date-fns/fp";
const addFiveYears = addYears(5); // 等待日期的函数

五、时区扩展(v4)

npm install @date-fns/tz

导出类型作用
TZDate带时区的 Date 扩展(含格式化器)
TZDateMini轻量版(无格式化器,体积更小)
tz(timeZone)函数给 date-fns 函数的 in 选项提供时区上下文
tzOffset(tz, date)函数取 UTC 偏移(分钟)
tzScan(tz, interval)函数探测 DST 切换
tzName(tz, date, fmt)函数取时区名
js
import { addDays, isSameDay } from "date-fns";
import { TZDate, tz } from "@date-fns/tz";

// 用法一:TZDate 实例
new TZDate(2024, 2, 13, "Asia/Singapore");

// 用法二:in 选项 + tz()
isSameDay(a, b, { in: tz("Asia/Singapore") });

旧方案 date-fns-tz(第三方)提供 formatInTimeZone / toZonedTime / fromZonedTime,与 @date-fns/tz 是不同的包。纯 UTC 计算可用 @date-fns/utcUTCDate

六、全局默认

js
import { setDefaultOptions, getDefaultOptions } from "date-fns";
import { zhCN } from "date-fns/locale";

setDefaultOptions({ locale: zhCN, weekStartsOn: 1 }); // 设默认 locale / 周起始
getDefaultOptions(); // 读当前默认

只设 locale / weekStartsOn / firstWeekContainsDate 等;不设时区(时区走 in 选项)。


命令查完,进 指南 · 基础 理解机制,或看 指南 · 进阶 / 指南 · 专家