add
将指定的年、月、周、日、时、分、秒添加到给定的日期。
导入
import { add } from 'date-fns';
定义
function add(
date: DateArg<DateType>,
duration: Duration,
options?: AddOptions<ResultDate>
): ResultDate;
参数
名称 | 类型 | 描述 |
---|---|---|
date | DateArg<DateType> | 更改日期 |
duration | Duration | 需要添加年、月、周、日、时、分、秒的对象。 |
options? | AddOptions<ResultDate> | 带有选项的对象 |
返回
类型 | 定义 |
---|---|
ResultDate | 添加了秒数的新日期 |
示例
const result = add(new Date(2014, 8, 1, 10, 19, 50), {
years: 2,
months: 9,
weeks: 1,
days: 7,
hours: 5,
minutes: 9,
seconds: 30
});
//=> Thu Jun 15 2017 15:29:20
closestIndexTo
返回与给定日期相比数组中最接近的日期的索引。
导入
import { closestIndexTo } from 'date-fns';
定义
function closestIndexTo(
dateToCompare: string | number | Date,
dates: Array<string | number | Date>
): number | undefined;
参数
名称 | 类型 | 描述 |
---|---|---|
dateToCompare | string | number | Date | 要比较的日期。 |
dates | Array<string | number | Date> | 要搜索的日期数组。 |
返回
类型 | 定义 |
---|---|
number | undefined | 最接近给定日期的日期索引,如果没有给出有效值则为未定义 |
示例
哪一个日期更接近 2015年9月6日
?
const dateToCompare = new Date(2015, 8, 6);
const datesArray = [
new Date(2015, 0, 1),
new Date(2016, 0, 1),
new Date(2017, 0, 1)
];
const result = closestIndexTo(dateToCompare, datesArray);
//=> 1
closestTo
从数组中返回最接近给定日期的日期。
导入
import { closestTo } from 'date-fns';
定义
function closestTo(
dateToCompare: DateToCompare,
dates: DatesType,
options?: Options
): ClosestToResult<DateToCompare, DatesType, Options> | undefined;
参数
名称 | 类型 | 描述 |
---|---|---|
dateToCompare | string | number | Date | 要比较的日期。 |
dates | DatesType | 要搜索的日期数组。 |
options? | Options | 要搜索的日期数组。 |
返回
类型 | 定义 |
---|---|
ClosestToResult<DateToCompare, DatesType, Options> | undefined | 数组中最接近给定日期的日期,如果没有给出有效值,则为未定义 |
示例
哪个日期更接近 2015年9月6日
?2000年1月1日
还是 2030年1月1日
?
const dateToCompare = new Date(2015, 8, 6);
const result = closestTo(dateToCompare, [
new Date(2000, 0, 1),
new Date(2030, 0, 1)
]);
//=> Tue Jan 01 2030 00:00:00
compareAsc
比较两个日期,如果第一个日期在第二个日期之后则返回 1,如果第一个日期在第二个日期之前则返回 -1,如果日期相等则返回 0。
导入
import { compareAsc } from 'date-fns';
定义
function compareAsc(
dateLeft: string | number | Date,
dateRight: string | number | Date
): number;
参数
名称 | 类型 | 描述 |
---|---|---|
dateLeft | string | number | Date | 要比较的第一个日期。 |
dateRight | string | number | Date | 要比较的第二个日期。 |
返回
类型 | 定义 |
---|---|
number | 比较结果 |
示例
比较 1987年2月11日
和 1989年7月10日
:
const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10));
//=> -1
对日期数组进行排序:
const result = [
new Date(1995, 6, 2),
new Date(1987, 1, 11),
new Date(1989, 6, 10)
].sort(compareAsc);
//=> [
// Wed Feb 11 1987 00:00:00,
// Mon Jul 10 1989 00:00:00,
// Sun Jul 02 1995 00:00:00
// ]
compareDesc
比较两个日期,如果第一个日期在第二个日期之后,则返回 -1;如果第一个日期在第二个日期之前,则返回 1;如果日期相等,则返回 0。
导入
import { compareDesc } from 'date-fns';
定义
function compareDesc(
dateLeft: string | number | Date,
dateRight: string | number | Date
): number;
参数
名称 | 类型 | 描述 |
---|---|---|
dateLeft | string | number | Date | 要比较的第一个日期。 |
dateRight | string | number | Date | 要比较的第二个日期。 |
返回
类型 | 定义 |
---|---|
number | 比较结果 |
示例
按时间顺序反向比较 1987年2月11日
和 1989年7月10日
:
const result = compareDesc(new Date(1987, 1, 11), new Date(1989, 6, 10));
//=> 1
按时间倒序对日期数组进行排序:
const result = [
new Date(1995, 6, 2),
new Date(1987, 1, 11),
new Date(1989, 6, 10)
].sort(compareDesc);
//=> [
// Sun Jul 02 1995 00:00:00,
// Mon Jul 10 1989 00:00:00,
// Wed Feb 11 1987 00:00:00
// ]
format
返回指定格式的格式化日期字符串,结果可能因地区而异。
两个单引号 (‘) 之间的字符会被转义。连续两个单引号 (无论是在引号序列内还是在引号序列外) 都表示 “真正的” 单引号。(参见最后一个例子)。
字符串格式基于 Unicode 技术标准,可接受的模式:
单位 | 模式 | 结果示例 | 注意 |
---|---|---|---|
Era | G..GGG | AD, BC | |
GGGG | Anno Domini, Before Christ | 2 | |
GGGGG | A, B | ||
Calendar year | y | 44, 1, 1900, 2017 | 5 |
yo | 44th, 1st, 0th, 17th | 5,7 | |
yy | 44, 01, 00, 17 | 5 | |
yyy | 044, 001, 1900, 2017 | 5 | |
yyyy | 0044, 0001, 1900, 2017 | 5 | |
yyyyy | ... | 3,5 | |
Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |
Yo | 44th, 1st, 1900th, 2017th | 5,7 | |
YY | 44, 01, 00, 17 | 5,8 | |
YYY | 044, 001, 1900, 2017 | 5 | |
YYYY | 0044, 0001, 1900, 2017 | 5,8 | |
YYYYY | ... | 3,5 | |
ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |
RR | -43, 00, 01, 1900, 2017 | 5,7 | |
RRR | -043, 000, 001, 1900, 2017 | 5,7 | |
RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 | |
RRRRR | ... | 3,5,7 | |
Extended year | u | -43, 0, 1, 1900, 2017 | 5 |
uu | -43, 01, 1900, 2017 | 5 | |
uuu | -043, 001, 1900, 2017 | 5 | |
uuuu | -0043, 0001, 1900, 2017 | 5 | |
uuuuu | ... | 3,5 | |
Quarter (formatting) | Q | 1, 2, 3, 4 | |
Qo | 1st, 2nd, 3rd, 4th | 7 | |
01, 02, 03, 04 | |||
QQQ | Q1, Q2, Q3, Q4 | ||
QQQQ | 1st quarter, 2nd quarter, ... | 2 | |
QQQQQ | 1, 2, 3, 4 | 4 | |
Quarter (stand-alone) | q | 1, 2, 3, 4 | |
qo | 1st, 2nd, 3rd, 4th | 7 | |
01, 02, 03, 04 | |||
qqq | Q1, Q2, Q3, Q4 | ||
qqqq | 1st quarter, 2nd quarter, ... | 2 | |
qqqqq | 1, 2, 3, 4 | 4 | |
Month (formatting) | M | 1, 2, ..., 12 | |
Mo | 1st, 2nd, ..., 12th | 7 | |
MM | 01, 02, ..., 12 | ||
MMM | Jan, Feb, ..., Dec | ||
MMMM | January, February, ..., December | 2 | |
MMMMM | J, F, ..., D | ||
Month (stand-alone) | L | 1, 2, ..., 12 | |
Lo | 1st, 2nd, ..., 12th | 7 | |
LL | 01, 02, ..., 12 | ||
LLL | Jan, Feb, ..., Dec | ||
LLLL | January, February, ..., December | 2 | |
LLLLL | J, F, ..., D | ||
Local week of year | w | 1, 2, ..., 53 | |
wo | 1st, 2nd, ..., 53th | 7 | |
ww | 01, 02, ..., 53 | ||
ISO week of year | I | 1, 2, ..., 53 | 7 |
Io | 1st, 2nd, ..., 53th | 7 | |
II | 01, 02, ..., 53 | 7 | |
Day of month | d | 1, 2, ..., 31 | |
do | 1st, 2nd, ..., 31st | 7 | |
dd | 01, 02, ..., 31 | ||
Day of year | D | 1, 2, ..., 365, 366 | 9 |
Do | 1st, 2nd, ..., 365th, 366th | 7 | |
DD | 01, 02, ..., 365, 366 | 9 | |
DDD | 001, 002, ..., 365, 366 | ||
DDDD | ... | 3 | |
Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |
EEEE | Monday, Tuesday, ..., Sunday | 2 | |
EEEEE | M, T, W, T, F, S, S | ||
EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | ||
ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |
io | 1st, 2nd, ..., 7th | 7 | |
ii | 01, 02, ..., 07 | 7 | |
iii | Mon, Tue, Wed, ..., Sun | 7 | |
iiii | Monday, Tuesday, ..., Sunday | 2,7 | |
iiiii | M, T, W, T, F, S, S | 7 | |
iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 | |
Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |
eo | 2nd, 3rd, ..., 1st | 7 | |
ee | 02, 03, ..., 01 | ||
eee | Mon, Tue, Wed, ..., Sun | ||
eeee | Monday, Tuesday, ..., Sunday | 2 | |
eeeee | M, T, W, T, F, S, S | ||
eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | ||
Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |
co | 2nd, 3rd, ..., 1st | 7 | |
cc | 02, 03, ..., 01 | ||
ccc | Mon, Tue, Wed, ..., Sun | ||
cccc | Monday, Tuesday, ..., Sunday | 2 | |
ccccc | M, T, W, T, F, S, S | ||
cccccc | Mo, Tu, We, Th, Fr, Sa, Su | ||
AM, PM | a..aa | AM, PM | |
aaa | am, pm | ||
aaaa | a.m., p.m. | 2 | |
aaaaa | a, p | ||
AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |
bbb | am, pm, noon, midnight | ||
bbbb | a.m., p.m., noon, midnight | 2 | |
bbbbb | a, p, n, mi | ||
Flexible day period | B..BBB | at night, in the morning, ... | |
BBBB | at night, in the morning, ... | 2 | |
BBBBB | at night, in the morning, ... | ||
Hour [1-12] | h | 1, 2, ..., 11, 12 | |
ho | 1st, 2nd, ..., 11th, 12th | 7 | |
hh | 01, 02, ..., 11, 12 | ||
Hour [0-23] | H | 0, 1, 2, ..., 23 | |
Ho | 0th, 1st, 2nd, ..., 23rd | 7 | |
HH | 00, 01, 02, ..., 23 | ||
Hour [0-11] | K | 1, 2, ..., 11, 0 | |
Ko | 1st, 2nd, ..., 11th, 0th | 7 | |
KK | 01, 02, ..., 11, 00 | ||
Hour [1-24] | k | 24, 1, 2, ..., 23 | |
ko | 24th, 1st, 2nd, ..., 23rd | 7 | |
kk | 24, 01, 02, ..., 23 | ||
Minute | m | 0, 1, ..., 59 | |
mo | 0th, 1st, ..., 59th | 7 | |
mm | 00, 01, ..., 59 | ||
Second | s | 0, 1, ..., 59 | |
so | 0th, 1st, ..., 59th | 7 | |
ss | 00, 01, ..., 59 | ||
Fraction of second | S | 0, 1, ..., 9 | |
SS | 00, 01, ..., 99 | ||
SSS | 000, 001, ..., 999 | ||
SSSS | ... | 3 | |
Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |
XX | -0800, +0530, Z | ||
XXX | -08:00, +05:30, Z | ||
XXXX | -0800, +0530, Z, +123456 | 2 | |
XXXXX | -08:00, +05:30, Z, +12:34:56 | ||
Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |
xx | -0800, +0530, +0000 | ||
xxx | -08:00, +05:30, +00:00 | 2 | |
xxxx | -0800, +0530, +0000, +123456 | ||
xxxxx | -08:00, +05:30, +00:00, +12:34:56 | ||
Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |
OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 | |
Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |
zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 | |
Seconds timestamp | t | 512969520 | 7 |
tt | ... | 3,7 | |
Milliseconds timestamp | T | 512969520900 | 7 |
TT | ... | 3,7 | |
Long localized date | P | 04/29/1453 | 7 |
PP | Apr 29, 1453 | 7 | |
PPP | April 29th, 1453 | 7 | |
PPPP | Friday, April 29th, 1453 | 2,7 | |
Long localized time | p | 12:00 AM | 7 |
pp | 12:00:00 AM | 7 | |
ppp | 12:00:00 AM GMT+2 | 7 | |
pppp | 12:00:00 AM GMT+02:00 | 2,7 | |
Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |
PPpp | Apr 29, 1453, 12:00:00 AM | 7 | |
PPPppp | April 29th, 1453 at ... | 7 | |
PPPPpppp | Friday, April 29th, 1453 at ... | 2,7 |
注意 (1)
在默认的 en-US 语言环境中,“格式化” 单元 (例如格式化季度) 与 “独立” 单元相同,但在某些语言中有所不同。
“格式化” 单元根据语言规则在日期上下文中进行变格。
“独立” 单元始终为主格单数:
format(new Date(2017, 10, 6), 'do LLLL', { locale: cs }); //=> '6. listopad'
format(new Date(2017, 10, 6), 'do MMMM', { locale: cs }); //=> '6. listopadu'
注意 (2)
任何相同字母的序列都是一个模式,除非用单引号字符进行转义 (见下文)。
如果序列比表中列出的序列长 (例如 EEEEEEEEEEE),则输出将与此单元的默认模式相同,通常是最长的模式 (对于 ISO 工作日,为 EEEE)。
单元的默认模式在表格的最后一列中标记为 “2”。
format(new Date(2017, 10, 6), 'MMM'); //=> 'Nov'
format(new Date(2017, 10, 6), 'MMMM'); //=> 'November'
format(new Date(2017, 10, 6), 'MMMMM'); //=> 'N'
format(new Date(2017, 10, 6), 'MMMMMM'); //=> 'November'
format(new Date(2017, 10, 6), 'MMMMMMM'); //=> 'November'
注意 (3)
有些模式的长度可能是无限的 (例如 yyyyyyyy)。输出将用零填充以匹配模式的长度。
format(new Date(2017, 10, 6), 'yyyyyyyy'); //=> '00002017'
注意 (4)
在某些地区,QQQQQ
和 qqqqq
可能不是严格意义上的数字。这些标记代表季度的最短形式。
注意 (5)
y
和 u
模式之间的主要区别是公元前年份:
Year | y | u |
---|---|---|
AC 1 | 1 | 1 |
BC 1 | 1 | 0 |
BC 2 | 2 | -1 |
此外,yy
始终返回年份的最后两位数字,而 uu
将个位数年份填充为 2 个字符,并返回其他年份而不做任何更改:
Year | yy | uu |
---|---|---|
1 | 01 | 01 |
14 | 14 | 14 |
376 | 76 | 376 |
1453 | 53 | 1453 |
当地和 ISO 周数年份 (Y
和 R
) 具有相同的差异,只是当地周数年份依赖于 options.weekStartsOn
和 options.firstWeekContainsDate
(比较 getISOWeekYear
和 getWeekYear
)。
注意 (6)
特定的非位置时区目前在 date-fns 中不可用,因此现在这些令牌会回退到 GMT 时区。
注意 (7)
这些模式不在 Unicode 技术标准中。
i
ISO 星期几I
ISO 一年中的第几周R
ISO 周数年份t
秒时间戳T
毫秒时间戳o
序数修饰符P
长本地化日期p
长本地化时间
注意 (8)
YY
和 YYYY
标记表示按周编号的年份,但它们经常与年份混淆。
您应该启用 options.useAdditionalWeekYearTokens
来使用它们。
注意 (9)
D
和 DD
标记表示一年中的天数,但它们经常与月份中的天数混淆。
您应该启用 options.useAdditionalDayOfYearTokens
来使用它们。
导入
import { format } from 'date-fns';
定义
function format(
date: string | number | Date,
formatStr: string,
options?: FormatOptions
): string;
参数
名称 | 类型 | 描述 |
---|---|---|
date | string | number | Date | 原始日期。 |
formatStr | string | 格式化模式。 |
options? | FormatOptions | 带有选项的对象。 |
返回
类型 | 定义 |
---|---|
string | 格式化的日期字符串 |
异常
描述 |
---|
date 不能是无效日期 |
options.locale 必须包含 localize 属性 |
options.locale 必须包含 formatLong 属性 |
使用 yyyy 而不是 YYYY 来格式化年份,使用 [提供的格式] 输入 [提供的输入]; |
使用 yy 而不是 YY 来格式化年份,使用 [提供的格式] 输入 [提供的输入]; |
使用 d 而不是 D 来使用 [提供的格式] 对输入 [提供的输入] 格式化月份的日期; |
使用 dd 而不是 DD 来使用 [提供的格式] 来格式化月份的日期 [提供的输入]; |
格式字符串包含未转义的拉丁字母字符 |
示例
以中端格式表示 2014年2月11日
:
const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy');
//=> '02/11/2014'
用世界语表示 2014年7月2日
:
import { eoLocale } from 'date-fns/locale/eo';
const result = format(new Date(2014, 6, 2), "do 'de' MMMM yyyy", {
locale: eoLocale
});
//=> '2-a de julio 2014'
通过单引号字符转义字符串:
const result = format(new Date(2014, 6, 2, 15), "h 'o''clock'");
//=> "3 o'clock"