Change Log

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.

This change log follows the format documented in Keep a CHANGELOG.

v2.30.0 - 2023-04-30

Kudos to @kossnocorp and @Andarist for working on the release.

Changes

v2.29.3 - 2022-09-13

This release is prepared by our own @leshakoss.

Fixed

v2.29.2 - 2022-08-18

This release is brought to you by @nopears, @vadimpopa and @leshakoss.

Fixed

v2.29.1 - 2022-08-18

Thanks to @fturmel for working on the release.

Fixed

v2.29.0 - 2022-07-22

On this release worked @tan75, @kossnocorp, @nopears, @Balastrong, @cpapazoglou, @dovca, @aliasgar55, @tomchentw, @JuanM04, @alexandresaura, @fturmel, @aezell, @andersravn, @TiagoPortfolio, @SukkaW, @Zebreus, @aviskarkc10, @maic66, @a-korzun, @Mejans, @davidspiess, @alexgul1, @matroskin062, @undecaf, @mprovenc, @jooola and @leshakoss.

Added

Fixed

Changed

v2.28.0 - 2021-12-28

Kudos to @tan75, @fturmel, @arcanar7, @jeffjose, @helmut-lang, @zrev2220, @jooola, @minitesh, @cowboy-bebug, @mesqueeb, @JuanM04, @zhirzh, @damon02 and @leshakoss for working on the release.

Added

Fixed

v2.27.0 - 2021-11-30

Kudos to @tan75, @hg-pyun, @07akioni, @razvanmitre, @Haqverdi, @pgcalixto, @janziemba, @fturmel, @JuanM04, @zhirzh, @seanghay, @bulutfatih, @nodeadtree, @cHaLkdusT, @a-korzun, @fishmandev, @wingclover, @Zacharias3690, @kossnocorp and @leshakoss for working on the release.

Fixed

Added

v2.26.0 - 2021-11-19

Thanks to @kossnocorp, @leshakoss, @tan75, @gaplo, @AbdAllahAbdElFattah13, @fturmel, @kentaro84207, @V-Gutierrez, @atefBB, @jhonatanmacazana, @zhirzh, @Haqverdi, @mandaputtra, @micnic and @rikkalo for working on the release.

Fixed

Changed

Added

v2.25.0 - 2021-10-05

This release is brought to you by @kossnocorp, @gierschv, @fturmel, @redbmk, @mprovenc, @artyom-ivanov and @tan75.

Added

v2.24.0 - 2021-09-17

Kudos to Sasha Koss, Lucas Silva, Jan Ziemba, Anastasia Kobzar, Deepak Gupta, Jonas L, Kentaro Suzuki, Koussay Haj Kacem, fturmel, Tan75 and Adriaan Callaerts for working on the release.

Fixed

Changed

Added

v2.23.0 - 2021-07-23

Thanks to Liam Tait, fturmel, Takuya Uehara, Branislav Lazic, Seyyed Morteza Moosavi, Felipe Armoni, Sasha Koss, Michael Mok, Tan75 and Maxim Topciu for working on the release.

Changed

Added

v2.22.1 - 2021-05-28

Thanks to Sasha Koss for working on the release.

Fixed

v2.22.0 - 2021-05-28

Sasha Koss, Lucas Silva, Lay, jwbth, fturmel, Tan75 and Anastasia Kobzar worked on this release.

Fixed

Added

v2.21.3 - 2021-05-08

This release is brought to you by Maxim Topciu.

Fixed

v2.21.2 - 2021-05-05

Kudos to Aleksei Korzun, Maxim Topciu, Jonas L, Mohammad ali Ali panah and Tan75 for working on the release.

Fixed

v2.21.1 - 2021-04-15

Thanks to Sasha Koss for working on the release.

Fixed

v2.21.0 - 2021-04-14

This release is brought to you by Aleksei Korzun, Tan75, Rubens Mariuzzo, Christoph Stenglein and Clément Tamisier.

Fixed

Added

v2.20.3 - 2021-04-13

Kudos to fturmel for working on the release.

Fixed

v2.20.2 - 2021-04-12

Kudos to Maxim Topciu for working on the release.

Fixed

v2.20.1 - 2021-04-09

This release is brought to you by Sasha Koss and Tan75.

Fixed

v2.20.0 - 2021-04-08

This release is brought to you by Sasha Koss, Maxim Topciu, tu4mo, Tan75, Ardit Dine, Carl Rosell, Roman Mahotskyi, Mateusz Krzak, fgottschalk, Anastasia Kobzar, Bilguun Ochirbat, Lesha Koss, YuLe and guyroberts21.

Fixed

Added

v2.19.0 - 2021-03-05

Tan75 worked on this release.

Fixed

Added

v2.18.0 - 2021-03-01

Thanks to Tan75 and Lesha Koss.

Fixed

Added

[2.17.0] - 2021-02-05

Kudos to @shaykav, @davidgape89, @rikkalo, @tan75, @talgautb, @owenl131, @kylesezhi, @inigoiparragirre, @gius, @Endeauvirr and @frankyston.

Fixed

Added

2.16.1 - 2020-07-31

Kudos to @aleksaps, @leedriscoll and @BanForFun for pull-requests!

Fixed

2.16.0 - 2020-08-27

Kudos to @jvpelt, @piotrl, @yotamofek, @dwaxweiler, @leedriscoll and @bradevans for working on the release. Also thanks to @PascalHonegger, @pickfire, @TheJaredWilcurt, @SidKH and @nfantone for improving the documentation.

Fixed

Changed

Added

2.15.0 - 2020-07-17

Thanks to @belgamo, @Matsuuu, @Imballinst, @arsnyder16, @pankajupadhyay29, @DCBN, @leedriscoll, @gottsohn, @mukuljainx and @dtriana for working on the release. Also kudos to @KidkArolis, @imgx64, @fjc0k, @wmonk, @djD-REK, @dandv, @psimk and @brimworks for improving the documentation.

Fixed

Changed

Added

2.14.0 - 2020-05-18

Kudos to @julamb, @JacobSoderblom, @justingrant, @dragunoff, @jmate0321, @gbhasha, @rasck, @AlbertoPdRF, @sebastianhaberey and @giogonzo for working on the release!

Fixed

Added

2.13.0 - 2020-05-06

Thanks to @JorenVos, @developergouli, @rhlowe and @justingrant for working on the release!

Fixed

Added

2.12.0 - 2020-04-09

Kudos to @leshakoss, @skyuplam, @so99ynoodles, @dkozickis, @belgamo, @akgondber, @dcousens and @BoomDev for working on the release!

Fixed

Added

2.11.1 - 2020-03-26

Fixed

2.11.0 - 2020-03-13

Kudos to @oakhan3, @Mukhammadali, @altrim, @leepowellcouk, @amatzon, @bryanMt, @kalekseev, @eugene-platov and @tjrobinson for working on the release.

Fixed

Changed

Added

2.10.0 - 2020-02-25

Fixed

Fixed

Added

2.9.0 - 2020-01-08

Thanks to @mborgbrant, @saintplay, @mrenty, @kibertoad, @levibuzolic, @Anshuman71, @talgautb, @filipjuza, @tobyzerner, @emil9453, @fintara, @pascaliske, @rramiachraf, @marnusw and @Imballinst for working on the release.

Fixed

Added

Changed

2.8.1 - 2019-11-22

Thanks to @Imballinst for the bug fix!

Fixed

2.8.0 - 2019-11-19

Kudos to @NaridaL, @Zyten, @Imballinst, @leshakoss and @Neorth for working on the release.

Fixed

Added

2.7.0 - 2019-11-07

Thanks to @mzgajner, @NaridaL, @Zyten, @leshakoss, @fintara, @kpr-hellofresh for contributing to the release.

Fixed

Changed

Added

2.6.0 - 2019-10-22

Kudos to @marnusw, @cdrikd and @rogyvoje for working on the release!

Added

2.5.1 - 2019-10-18

Thanks to @mitchellbutler for the bug fix!

Fixed

2.5.0 - 2019-10-16

Kudos to @dkozickis, @drugoi, @kranthilakum, @102, @gpetrioli and @JulienMalige for making the release happen.

Fixed

Added

2.4.1 - 2019-09-28

Thanks to @mrclayman for reporting the issue and @leshakoss for fixing it.

Fixed

2.4.0 - 2019-09-27

This release is brought to you by these amazing people: @lovelovedokidoki, @alexigityan, @kalekseev and @andybangs. You rock!

Fixed

Added

2.3.0 - 2019-09-24

Huge thanks to @lovelovedokidoki who improved 8 (!) locales in an unstoppable open-source rampage and @VesterDe for fixing Slovenian locale 👏

Fixed

Added

2.2.1 - 2019-09-12

Kudos to date-fns contributors: @mzgajner, @sibiraj-s, @mukeshmandiwal, @SneakyFish5 and @CarterLi.

Added

2.1.0 - 2019-09-06

Thanks to date-fns contributors: @ManadayM, @illuminist, @visualfanatic, @vsaarinen and at last but not the least @leshakoss!

Fixed

Added

2.0.1 - 2019-08-23

Fixed

2.0.0 - 2019-08-20

If you're upgrading from v2 alpha or beta, see the pre-release changelog.

Fixed

Changed

From now on a string should be parsed using parseISO (ISO 8601) or parse.

In v1 we've used new Date() to parse strings, but it resulted in many hard-to-track bugs caused by inconsistencies in different browsers. To address that we've implemented our ISO 8601 parser but that made library to significantly grow in size. To prevent inevitable bugs and keep the library tiny, we made this trade-off.

See this post for more details.

```javascript // Before v2.0.0 addDays('2016-01-01', 1)

// v2.0.0 onward addDays(parseISO('2016-01-01'), 1) ```

| Unit | v2 Pattern | v1 Pattern | Result examples | | ------------------------------- | ---------- | ---------- | --------------------------------- | | Era | G..GGG | | AD, BC | | | GGGG | | Anno Domini, Before Christ | | | GGGGG | | A, B | | Calendar year | y | | 44, 1, 1900, 2017 | | | yo | | 44th, 1st, 0th, 17th | | | yy | YY | 44, 01, 00, 17 | | | yyy | | 044, 001, 1900, 2017 | | | yyyy | YYYY | 0044, 0001, 1900, 2017 | | | yyyyy | | ... | | Local week-numbering year | Y | | 44, 1, 1900, 2017 | | | Yo | | 44th, 1st, 1900th, 2017th | | | YY | | 44, 01, 00, 17 | | | YYY | | 044, 001, 1900, 2017 | | | YYYY | | 0044, 0001, 1900, 2017 | | | YYYYY | | ... | | ISO week-numbering year | R | | -43, 0, 1, 1900, 2017 | | | RR | GG | -43, 00, 01, 1900, 2017 | | | RRR | | -043, 000, 001, 1900, 2017 | | | RRRR | GGGG | -0043, 0000, 0001, 1900, 2017 | | | RRRRR | | ... | | Extended year | u | | -43, 0, 1, 1900, 2017 | | | uu | | -43, 01, 1900, 2017 | | | uuu | | -043, 001, 1900, 2017 | | | uuuu | | -0043, 0001, 1900, 2017 | | | uuuuu | | ... | | Quarter (formatting) | Q | | 1, 2, 3, 4 | | | Qo | | 1st, 2nd, 3rd, 4th | | | QQ | | 01, 02, 03, 04 | | | QQQ | | Q1, Q2, Q3, Q4 | | | QQQQ | | 1st quarter, 2nd quarter, ... | | | QQQQQ | | 1, 2, 3, 4 | | Quarter (stand-alone) | q | Q | 1, 2, 3, 4 | | | qo | Qo | 1st, 2nd, 3rd, 4th | | | qq | | 01, 02, 03, 04 | | | qqq | | Q1, Q2, Q3, Q4 | | | qqqq | | 1st quarter, 2nd quarter, ... | | | qqqqq | | 1, 2, 3, 4 | | Month (formatting) | M | | 1, 2, ..., 12 | | | Mo | | 1st, 2nd, ..., 12th | | | MM | | 01, 02, ..., 12 | | | MMM | | Jan, Feb, ..., Dec | | | MMMM | | January, February, ..., December | | | MMMMM | | J, F, ..., D | | Month (stand-alone) | L | M | 1, 2, ..., 12 | | | Lo | | 1st, 2nd, ..., 12th | | | LL | MM | 01, 02, ..., 12 | | | LLL | MMM | Jan, Feb, ..., Dec | | | LLLL | MMMM | January, February, ..., December | | | LLLLL | | J, F, ..., D | | Local week of year | w | | 1, 2, ..., 53 | | | wo | | 1st, 2nd, ..., 53th | | | ww | | 01, 02, ..., 53 | | ISO week of year | I | W | 1, 2, ..., 53 | | | Io | Wo | 1st, 2nd, ..., 53th | | | II | WW | 01, 02, ..., 53 | | Day of month | d | D | 1, 2, ..., 31 | | | do | Do | 1st, 2nd, ..., 31st | | | dd | DD | 01, 02, ..., 31 | | Day of year | D | DDD | 1, 2, ..., 365, 366 | | | Do | DDDo | 1st, 2nd, ..., 365th, 366th | | | DD | | 01, 02, ..., 365, 366 | | | DDD | DDDD | 001, 002, ..., 365, 366 | | | DDDD | | ... | | Day of week (formatting) | E..EEE | | Mon, Tue, Wed, ..., Su | | | EEEE | | Monday, Tuesday, ..., Sunday | | | EEEEE | | M, T, W, T, F, S, S | | | EEEEEE | | Mo, Tu, We, Th, Fr, Sa, Su | | ISO day of week (formatting) | i | E | 1, 2, 3, ..., 7 | | | io | do | 1st, 2nd, ..., 7th | | | ii | | 01, 02, ..., 07 | | | iii | ddd | Mon, Tue, Wed, ..., Su | | | iiii | dddd | Monday, Tuesday, ..., Sunday | | | iiiii | | M, T, W, T, F, S, S | | | iiiiii | dd | Mo, Tu, We, Th, Fr, Sa, Su | | Local day of week (formatting) | e | | 2, 3, 4, ..., 1 | | | eo | | 2nd, 3rd, ..., 1st | | | ee | | 02, 03, ..., 01 | | | eee | | Mon, Tue, Wed, ..., Su | | | eeee | | Monday, Tuesday, ..., Sunday | | | 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 | | | cc | | 02, 03, ..., 01 | | | ccc | | Mon, Tue, Wed, ..., Su | | | cccc | | Monday, Tuesday, ..., Sunday | | | ccccc | | M, T, W, T, F, S, S | | | cccccc | | Mo, Tu, We, Th, Fr, Sa, Su | | AM, PM | a..aaa | A | AM, PM | | | aaaa | aa | a.m., p.m. | | | aaaaa | | a, p | | AM, PM, noon, midnight | b..bbb | | AM, PM, noon, midnight | | | bbbb | | a.m., p.m., noon, midnight | | | bbbbb | | a, p, n, mi | | Flexible day period | B..BBB | | at night, in the morning, ... | | | BBBB | | at night, in the morning, ... | | | BBBBB | | at night, in the morning, ... | | Hour [1-12] | h | | 1, 2, ..., 11, 12 | | | ho | | 1st, 2nd, ..., 11th, 12th | | | hh | | 01, 02, ..., 11, 12 | | Hour [0-23] | H | | 0, 1, 2, ..., 23 | | | Ho | | 0th, 1st, 2nd, ..., 23rd | | | HH | | 00, 01, 02, ..., 23 | | Hour [0-11] | K | | 1, 2, ..., 11, 0 | | | Ko | | 1st, 2nd, ..., 11th, 0th | | | KK | | 1, 2, ..., 11, 0 | | Hour [1-24] | k | | 24, 1, 2, ..., 23 | | | ko | | 24th, 1st, 2nd, ..., 23rd | | | kk | | 24, 01, 02, ..., 23 | | Minute | m | | 0, 1, ..., 59 | | | mo | | 0th, 1st, ..., 59th | | | mm | | 00, 01, ..., 59 | | Second | s | | 0, 1, ..., 59 | | | so | | 0th, 1st, ..., 59th | | | ss | | 00, 01, ..., 59 | | Fraction of second | S | | 0, 1, ..., 9 | | | SS | | 00, 01, ..., 99 | | | SSS | | 000, 0001, ..., 999 | | | SSSS | | ... | | Timezone (ISO-8601 w/ Z) | X | | -08, +0530, Z | | | XX | | -0800, +0530, Z | | | XXX | | -08:00, +05:30, Z | | | XXXX | | -0800, +0530, Z, +123456 | | | XXXXX | | -08:00, +05:30, Z, +12:34:56 | | Timezone (ISO-8601 w/o Z) | x | | -08, +0530, +00 | | | xx | ZZ | -0800, +0530, +0000 | | | xxx | Z | -08:00, +05:30, +00:00 | | | 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 | | Timezone (specific non-locat.) | z...zzz | | GMT-8, GMT+5:30, GMT+0 | | | zzzz | | GMT-08:00, GMT+05:30, GMT+00:00 | | Seconds timestamp | t | X | 512969520 | | | tt | | ... | | Milliseconds timestamp | T | x | 512969520900 | | | TT | | ... | | Long localized date | P | | 5/29/53 | | | PP | | May 29, 1453 | | | PPP | | May 29th, 1453 | | | PPPP | | Sunday, May 29th, 1453 | | Long localized time | p | | 12:00 AM | | | pp | | 12:00:00 AM | | | ppp | | 12:00:00 AM GMT+2 | | | pppp | | 12:00:00 AM GMT+02:00 | | Combination of date and time | Pp | | 5/29/53, 12:00 AM | | | PPpp | | May 29, 1453, 12:00 AM | | | PPPppp | | May 29th, 1453 at ... | | | PPPPpppp | | Sunday, May 29th, 1453 at ... |

Characters are now escaped using single quote symbols (') instead of square brackets. format now throws RangeError if it encounters an unescaped latin character that isn't a valid formatting token.

To use YY and YYYY tokens that represent week-numbering years, you should set useAdditionalWeekYearTokens option:

javascript format(Date.now(), 'YY', { useAdditionalWeekYearTokens: true }) //=> '86'

To use D and DD tokens which represent days of the year, set useAdditionalDayOfYearTokens option:

javascript format(Date.now(), 'D', { useAdditionalDayOfYearTokens: true }) //=> '364'

```javascript // Before v2.0.0 import differenceInCalendarISOYears from 'date-fns/difference_in_calendar_iso_years'

// v2.0.0 onward import differenceInCalendarISOYears from 'date-fns/differenceInCalendarISOYears' ```

```javascript // Before v2.0.0 var date1 = new Date(1989, 6 / Jul /, 10) var date2 = new Date(1987, 1 / Feb /, 11)

var minDate = min(date1, date2) var maxDate = max(date1, date2)

// v2.0.0 onward: var dates = [new Date(1989, 6 / Jul /, 10), new Date(1987, 1 / Feb /, 11)]

var minDate = min(dates) var maxDate = max(dates) ```

```javascript // Before v2.0.0 format(new Date(2016, 0, 1))

// v2.0.0 onward format(new Date(2016, 0, 1), "yyyy-MM-dd'T'HH:mm:ss.SSSxxx") ```

i.e. "ISO year" renamed to "ISO week year", which is short for ISO week-numbering year. It makes them consistent with locale-dependent week-numbering year helpers, e.g., startOfWeekYear.

This change was made to mirror the use of the word "interval" in standard ISO 8601:2004 terminology:

2.1.3 time interval part of the time axis limited by two instants

Also these functions now accept an object with start and end properties instead of two arguments as an interval. All these functions throw RangeError if the start of the interval is after its end or if any date in the interval is Invalid Date.

```javascript // Before v2.0.0

areRangesOverlapping( new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 17), new Date(2014, 0, 21) )

eachDay(new Date(2014, 0, 10), new Date(2014, 0, 20))

getOverlappingDaysInRanges( new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 17), new Date(2014, 0, 21) )

isWithinRange( new Date(2014, 0, 3), new Date(2014, 0, 1), new Date(2014, 0, 7) )

// v2.0.0 onward

areIntervalsOverlapping( { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) }, { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) } )

eachDayOfInterval({ start: new Date(2014, 0, 10), end: new Date(2014, 0, 20), })

getOverlappingDaysInIntervals( { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) }, { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) } )

isWithinInterval(new Date(2014, 0, 3), { start: new Date(2014, 0, 1), end: new Date(2014, 0, 7), }) ```

to make them consistent with format and formatRelative.

```javascript // Before v2.0.0

distanceInWords( new Date(1986, 3, 4, 10, 32, 0), new Date(1986, 3, 4, 11, 32, 0), { addSuffix: true } ) //=> 'in about 1 hour'

// v2.0.0 onward

formatDistance( new Date(1986, 3, 4, 11, 32, 0), new Date(1986, 3, 4, 10, 32, 0), { addSuffix: true } ) //=> 'in about 1 hour' ```

```javascript // Before v2.0.0

distanceInWordsStrict( new Date(1986, 3, 4, 10, 32, 0), new Date(1986, 3, 4, 10, 33, 1), { partialMethod: 'ceil' } ) //=> '2 minutes'

// v2.0.0 onward

formatDistanceStrict( new Date(1986, 3, 4, 10, 33, 1), new Date(1986, 3, 4, 10, 32, 0), { roundingMethod: 'ceil' } ) //=> '2 minutes' ```

```javascript // Before v2.0.0

distanceInWordsStrict( new Date(1986, 3, 4, 10, 32, 0), new Date(1986, 3, 4, 10, 33, 1), { unit: 'm' } )

// v2.0.0 onward

formatDistanceStrict( new Date(1986, 3, 4, 10, 33, 1), new Date(1986, 3, 4, 10, 32, 0), { unit: 'minute' } ) ```

```javascript // Before v2.0.0 parse('2016-01-01') parse(1547005581366) parse(new Date()) // Clone the date

// v2.0.0 onward parse('2016-01-01', 'yyyy-MM-dd', new Date()) parseISO('2016-01-01') toDate(1547005581366) toDate(new Date()) // Clone the date ```

```javascript // Before v2.0.0 import locale from 'date-fns/locale/zh_cn'

// v2.0.0 onward import locale from 'date-fns/locale/zh-CN' ```

Examples:

| isValid argument | Before v2.0.0 | v2.0.0 onward | | ------------------------- | ------------- | ------------- | | new Date() | true | true | | new Date('2016-01-01') | true | true | | new Date('') | false | false | | new Date(1488370835081) | true | true | | new Date(NaN) | false | false | | '2016-01-01' | TypeError | false | | '' | TypeError | false | | 1488370835081 | TypeError | true | | NaN | TypeError | false |

We introduce this change to make date-fns consistent with ECMAScript behavior that try to coerce arguments to the expected type (which is also the case with other date-fns functions).

| | date | number | string | boolean | | --------- | ------------ | ------ | ----------- | ------- | | 0 | new Date(0) | 0 | '0' | false | | '0' | Invalid Date | 0 | '0' | false | | 1 | new Date(1) | 1 | '1' | true | | '1' | Invalid Date | 1 | '1' | true | | true | Invalid Date | NaN | 'true' | true | | false | Invalid Date | NaN | 'false' | false | | null | Invalid Date | NaN | 'null' | false | | undefined | Invalid Date | NaN | 'undefined' | false | | NaN | Invalid Date | NaN | 'NaN' | false |

Notes:

null and undefined passed to optional arguments (i.e. properties of options argument) are ignored as if no argument was passed.

If any resulting argument is invalid (i.e. NaN for numbers and Invalid Date for dates), an invalid value will be returned:

See tests and PRs #460 and #765 for exact behavior.

Added

Functions with options (format, parse, etc.) have two FP counterparts: one that has the options object as its first argument and one that hasn't. The name of the former has WithOptions added to the end of its name.

In FP functions, the order of arguments is reversed.

See FP Guide for more information.

```javascript import addYears from 'date-fns/fp/addYears' import formatWithOptions from 'date-fns/fp/formatWithOptions' import eo from 'date-fns/locale/eo'

// If FP function has not received enough arguments, it returns another function const addFiveYears = addYears(5)

// Several arguments can be curried at once const dateToString = formatWithOptions({ locale: eo }, 'd MMMM yyyy')

const dates = [ new Date(2017, 0 / Jan /, 1), new Date(2017, 1 / Feb /, 11), new Date(2017, 6 / Jul /, 2), ]

const formattedDates = dates.map((date) => dateToString(addFiveYears(date))) //=> ['1 januaro 2022', '11 februaro 2022', '2 julio 2022'] ```

It allows usage with bundlers that support tree-shaking, like rollup.js and webpack:

```javascript // Without tree-shaking: import format from 'date-fns/format' import parse from 'date-fns/parse'

// With tree-shaking: import { format, parse } from 'date-fns' ```

Also, ESM functions provide default export, they can be used with TypeScript to import functions in more idiomatic way:

```typescript // Before import * as format from 'date-fns/format'

// Now import format from 'date-fns/format' ```

[1.30.1] - 2018-12-10

Fixed

Added

Changed

[1.30.0] - 2018-12-10

⚠️ The release got failed.

[1.29.0] - 2017-10-11

Fixed

Added

1.28.5 - 2017-05-19

Fixed

1.28.4 - 2017-04-26

Fixed

1.28.3 - 2017-04-14

Fixed

1.28.2 - 2017-03-27

Fixed

1.28.1 - 2017-03-19

Fixed

1.28.0 - 2017-02-27

Added

Fixed

1.27.2 - 2017-02-01

Fixed

1.27.1 - 2017-01-20

Fixed

1.27.0 - 2017-01-19

Added

1.26.0 - 2017-01-15

Added

Fixed

1.25.0 - 2017-01-11

Added

1.24.0 - 2017-01-06

Added

1.23.0 - 2017-01-05

Added

1.22.0 - 2016-12-28

Added

1.21.1 - 2016-12-18

Fixed

1.21.0 - 2016-12-16

Added

1.20.1 - 2016-12-14

Fixed

1.20.0 - 2016-12-13

Added

1.19.0 - 2016-12-13

Added

1.18.0 - 2016-12-12

Added

Fixed

1.17.0 - 2016-12-10

Added

Fixed

Changed

1.16.0 - 2016-12-08

Added

1.15.1 - 2016-12-07

Fixed

1.15.0 - 2016-12-07

Added

Fixed

1.14.1 - 2016-12-06

Fixed

1.14.0 - 2016-12-06

Added

1.13.0 - 2016-12-06

Added

1.12.1 - 2016-12-05

Fixed

1.12.0 - 2016-12-05

Added

Fixed

1.11.2 - 2016-11-28

Fixed

1.11.1 - 2016-11-24

Fixed

1.11.0 - 2016-11-23

Added

1.10.0 - 2016-11-01

Added

javascript var result = parse('19') //=> Mon Jan 01 1900 00:00:00

javascript parse('+002016-11-01') parse('+02016-11-01', { additionalDigits: 1 }) parse('+2016-11-01', { additionalDigits: 0 })

1.9.0 - 2016-10-25

Added

1.8.1 - 2016-10-24

Fixed

1.8.0 - 2016-10-23

Added

1.7.0 - 2016-10-20

Added

1.6.0 - 2016-10-16

Added

1.5.2 - 2016-10-13

Fixed

1.5.1 - 2016-10-12

Fixed

1.5.0 - 2016-10-12

Added

1.4.0 - 2016-10-09

Added

Fixed

1.3.0 - 2016-05-26

Added

1.2.0 - 2016-05-23

Added

1.1.1 - 2016-05-19

Fixed

1.1.0 - 2016-05-19

Added

1.0.0 - 2016-05-18

Fixed

Changed

```javascript // Before v1.0.0 var addMonths = require('date-fns/src/add_months')

// v1.0.0 onward var addMonths = require('date-fns/add_months') ```

```javascript // Before v1.0.0 var result = endOfWeek(new Date(2014, 8, 2), 1)

// v1.0.0 onward var result = endOfWeek(new Date(2014, 8, 2), { weekStartsOn: 1 }) ```

Added

0.17.0 - 2015-09-29

Fixed

Changed

Added

0.16.0 - 2015-09-01

Changed

Added

0.15.0 - 2015-08-26

Changed

Added

0.14.11 - 2015-08-21

Fixed

Changed

0.14.10 - 2015-07-29

Fixed

Added

0.14.9 - 2015-01-14

Fixed

0.14.8 - 2014-12-25

Fixed

0.14.6 - 2014-12-04

Fixed

0.14.0 - 2014-11-05

Added

0.13.0 - 2014-10-22

Added

0.12.1 - 2014-10-19

Fixed

0.12.0 - 2014-10-15

Added

0.11.0 - 2014-10-15

Added

0.10.0 - 2014-10-13

Added

0.9.0 - 2014-10-10

Changed

Added

0.8.0 - 2014-10-09

Changed

Added

0.7.0 - 2014-10-08

Added

0.6.0 - 2014-10-07

Fixed

Added

0.5.0 - 2014-10-07

Added

0.4.0 - 2014-10-07

Added

0.3.0 - 2014-10-06

Changed

Added

0.2.0 - 2014-10-06

Added

0.1.0 - 2014-10-06

Added