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:20closestIndexTo
返回与给定日期相比数组中最接近的日期的索引。
导入
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);
//=> 1closestTo
从数组中返回最接近给定日期的日期。
导入
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:00compareAsc
比较两个日期,如果第一个日期在第二个日期之后则返回 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 技术标准中。
iISO 星期几IISO 一年中的第几周RISO 周数年份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"