landvex: Fixar och tester klara för alla komponenter
- Datafabrik: Dockerfile fix, agentorkestrering fungerar - Vision: Identify-modell, FAISS, OCR alla testade - API: Alla 7 integrationstester passerade - Upplösare: Entitetsupplösning verifierad
This commit is contained in:
+2569
@@ -0,0 +1,2569 @@
|
||||
# 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].
|
||||
|
||||
[semantic versioning]: http://semver.org/
|
||||
[keep a changelog]: http://keepachangelog.com/
|
||||
|
||||
## v2.30.0 - 2023-04-30
|
||||
|
||||
Kudos to @kossnocorp and @Andarist for working on the release.
|
||||
|
||||
### Changes
|
||||
|
||||
- Fixed increased build size after enabling compatibility with older browsers in the previous release. This was done by adding @babel/runtime as a dependency. [See more details](https://github.com/date-fns/date-fns/issues/3208#issuecomment-1528592465).
|
||||
|
||||
## v2.29.3 - 2022-09-13
|
||||
|
||||
This release is prepared by our own @leshakoss.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed Ukrainian (`uk`) locale grammar for `formatDistance`.](https://github.com/date-fns/date-fns/pull/3175)
|
||||
|
||||
- [Improved browser compatibility by transforming the code with `@babel/preset-env`.](https://github.com/date-fns/date-fns/pull/3167)
|
||||
|
||||
## v2.29.2 - 2022-08-18
|
||||
|
||||
This release is brought to you by @nopears, @vadimpopa and @leshakoss.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed `sv` locale abbreviated months matcher.](https://github.com/date-fns/date-fns/pull/3160)
|
||||
|
||||
- [Fixed `uk` locale abbreviated months matcher.](https://github.com/date-fns/date-fns/pull/3139)
|
||||
|
||||
- [Fixed a breaking change in `intervalToDuration` by removing a recently introduced RangeError.](https://github.com/date-fns/date-fns/pull/3153)
|
||||
|
||||
## v2.29.1 - 2022-08-18
|
||||
|
||||
Thanks to @fturmel for working on the release.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed TypeScript and flow types for daysInYear constant.](https://github.com/date-fns/date-fns/pull/3125)
|
||||
|
||||
## 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
|
||||
|
||||
- [Added `intlFormatDistance` function`.](https://github.com/date-fns/date-fns/pull/2173)
|
||||
|
||||
- [Added `setDefaultOptions` and `getDefaultOptions` functions that allow you to set default default locale, `weekStartsOn` and `firstWeekContainsDate`.](https://github.com/date-fns/date-fns/pull/3069)
|
||||
|
||||
- [Added `roundingMethod` option to `roundToNearestMinutes`.](https://github.com/date-fns/date-fns/pull/3091)
|
||||
|
||||
- [Added Swiss Italian locale (`it-CH`).](https://github.com/date-fns/date-fns/pull/2886)
|
||||
|
||||
- [Added Occitan (`oc`) locale.](https://github.com/date-fns/date-fns/pull/2106) ([#2061](https://github.com/date-fns/date-fns/issues/2061))
|
||||
|
||||
- [Added Belarusian Classic (`be-tarask`) locale.](https://github.com/date-fns/date-fns/pull/3115)
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed Azerbaijani (`az`) locale for `formatDistance`.](https://github.com/date-fns/date-fns/pull/2924)
|
||||
|
||||
- [Fixed Czech (`cs`) locale for `parse`.](https://github.com/date-fns/date-fns/pull/3059)
|
||||
|
||||
- [Fixed TypeScript types for constants.](https://github.com/date-fns/date-fns/pull/2941)
|
||||
|
||||
- [Fixed long formatters in the South African English locale (`en-ZA`).](https://github.com/date-fns/date-fns/pull/3014)
|
||||
|
||||
- [Fixed a typo in the Icelandic locale (`is`) for `format`.](https://github.com/date-fns/date-fns/pull/2974)
|
||||
|
||||
- [Fixed weekday format for `formatRelative` in the Portuguese locale (`pt`).](https://github.com/date-fns/date-fns/pull/2992)
|
||||
|
||||
- [Fixed `intervalToDuration` being off by 1 day sometimes.](https://github.com/date-fns/date-fns/pull/2616)
|
||||
|
||||
- [Fixed ordinal number formatting in Italian locale (`it`).](https://github.com/date-fns/date-fns/pull/1617)
|
||||
|
||||
- [Fixed issue parsing months in Croatian (`hr`), Georgian (`ka`) and Serbian (`sr` and `sr-Latn`) locales.](https://github.com/date-fns/date-fns/pull/2898)
|
||||
|
||||
### Changed
|
||||
|
||||
- [Replaced `git.io` links with full URLs in error messages.](https://github.com/date-fns/date-fns/pull/3021)
|
||||
|
||||
- [_Internal_: removed "v2.0.0 breaking changes" section from individual function docs](https://github.com/date-fns/date-fns/pull/2905)
|
||||
|
||||
## 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
|
||||
|
||||
- [Added West Frisian (`fy`) locale.](https://github.com/date-fns/date-fns/pull/2183)
|
||||
|
||||
- [Added Uzbek Cyrillic locale (`uz-Cyrl`).](https://github.com/date-fns/date-fns/pull/2811)
|
||||
|
||||
### Fixed
|
||||
|
||||
- [add the missing accent mark for Saturday in Spanish locale (`es`) for `format`.](https://github.com/date-fns/date-fns/pull/2869)
|
||||
|
||||
- [allowed `K` token to be used with `a` or `b` in `parse`.](https://github.com/date-fns/date-fns/pull/2814)
|
||||
|
||||
## 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
|
||||
|
||||
- [Fixed translation for quarters in `format` in Chinese Simplified locale (`zh-CN`).](https://github.com/date-fns/date-fns/pull/2771)
|
||||
|
||||
- [Fixed `P` token in `format` for Romanian locale (`ro`).](https://github.com/date-fns/date-fns/pull/2213)
|
||||
|
||||
- [Fixed era and month formatters in Azerbaijani locale (`az`).](https://github.com/date-fns/date-fns/pull/1632)
|
||||
|
||||
- [Fixed `formatRelative` patterns in Georgian locale (`ka`).](https://github.com/date-fns/date-fns/pull/2797)
|
||||
|
||||
- [Fixed regular expressions for `parse` in Estonian locale (`er`).](https://github.com/date-fns/date-fns/pull/2038)
|
||||
|
||||
- [Fixed the format of zeros in `formatDuration` in Czech locale (`cs`).](https://github.com/date-fns/date-fns/pull/2579)
|
||||
|
||||
- [Fixed ordinal formatting for years, weeks, hours, minutes and seconds in `fr`, `fr-CA` and `fr-CH` locales.](https://github.com/date-fns/date-fns/pull/2626)
|
||||
|
||||
- [Fixed constants not having proper TypeScript and Flow types.](https://github.com/date-fns/date-fns/pull/2791)
|
||||
|
||||
- [Fixed translation for Monday in Turkish locale (`tr`).](https://github.com/date-fns/date-fns/pull/2720)
|
||||
|
||||
- [Fixed `eachMinuteOfInterval` not handling intervals less than a minute correctly.](https://github.com/date-fns/date-fns/pull/2603)
|
||||
|
||||
- [Fixed flow types for `closestTo` and `closestIndexTo`.](https://github.com/date-fns/date-fns/pull/2781)
|
||||
|
||||
### Added
|
||||
|
||||
- [Added Khmer locale (`km`).](https://github.com/date-fns/date-fns/pull/2713)
|
||||
|
||||
## 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
|
||||
|
||||
- [Fixed `formatRelative` format for `lastWeek` in Spanish locale.](https://github.com/date-fns/date-fns/pull/2753)
|
||||
|
||||
- [Fixed translation for October in Hindi locale.](https://github.com/date-fns/date-fns/pull/2729)
|
||||
|
||||
- [Fixed Azerbaijani locale to use correct era matchers for `parse`.](https://github.com/date-fns/date-fns/pull/1633)
|
||||
|
||||
- [Added the functions that use `weekStartsOn` and `firstWeekContainsDate` that were missing from the `Locale` documentation page.](https://github.com/date-fns/date-fns/pull/2652)
|
||||
|
||||
### Changed
|
||||
|
||||
- [Changed abbreviation for August from "Ags" to "Agt" in Indonesian locale.](https://github.com/date-fns/date-fns/pull/2658)
|
||||
|
||||
### Added
|
||||
|
||||
- [Added Irish English locale (`en-IE`).](https://github.com/date-fns/date-fns/pull/2772)
|
||||
|
||||
- [Added Arabic locale (`ar`).](https://github.com/date-fns/date-fns/pull/2721) ([#1670](https://github.com/date-fns/date-fns/issues/1670))
|
||||
|
||||
- [Added Hong Kong Traditional Chinese locale (zh-HK).](https://github.com/date-fns/date-fns/pull/2686) ([#2684](https://github.com/date-fns/date-fns/issues/2684))
|
||||
|
||||
- [Added Egyptian Arabic locale (ar-EG).](https://github.com/date-fns/date-fns/pull/2699)
|
||||
|
||||
## v2.25.0 - 2021-10-05
|
||||
|
||||
This release is brought to you by @kossnocorp, @gierschv, @fturmel, @redbmk, @mprovenc, @artyom-ivanov and @tan75.
|
||||
|
||||
### Added
|
||||
|
||||
- [Added Japanese Hiragana locale (`ja-Hira`).](https://github.com/date-fns/date-fns/pull/2663)
|
||||
|
||||
- [Added standalone months support to `de` and `de-AT` locales.](https://github.com/date-fns/date-fns/pull/2602)
|
||||
|
||||
## v2.24.0 - 2021-09-17
|
||||
|
||||
Kudos to [Sasha Koss](http://github.com/kossnocorp), [Lucas Silva](http://github.com/LucasHFS), [Jan Ziemba](http://github.com/janziemba), [Anastasia Kobzar](http://github.com/rikkalo), [Deepak Gupta](http://github.com/Mr-DG-Wick), [Jonas L](http://github.com/jooola), [Kentaro Suzuki](http://github.com/kentaro84207), [Koussay Haj Kacem](http://github.com/essana3), [fturmel](http://github.com/fturmel), [Tan75](http://github.com/tan75) and [Adriaan Callaerts](http://github.com/call-a3) for working on the release.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed an edge case in the Slovak locale caused by unescaped character.](https://github.com/date-fns/date-fns/pull/2540) ([#2083](https://github.com/date-fns/date-fns/issues/2083))
|
||||
|
||||
### Changed
|
||||
|
||||
- [Used `1` instead of `ein` for German `formatDuration` to make it consistent with other locales and formats.](https://github.com/date-fns/date-fns/pull/2576) ([#2505](https://github.com/date-fns/date-fns/issues/2505))
|
||||
|
||||
- [Made Norwegian `formatDuration` consistent with other locales by using numeric representation instead of written.](https://github.com/date-fns/date-fns/pull/2631) ([#2469](https://github.com/date-fns/date-fns/issues/2469))
|
||||
|
||||
- [Use the word "sekunda" instead of "vteřina" for second in the Czech locale.](https://github.com/date-fns/date-fns/pull/2577)
|
||||
|
||||
- [Made Flemish short date format corresponds to the Flemish government.](https://github.com/date-fns/date-fns/pull/2535)
|
||||
|
||||
### Added
|
||||
|
||||
- [Added `roundingMethod` option to `differenceInHours`, `differenceInMinutes`, `differenceInQuarters`, `differenceInSeconds` and `differenceInWeeks` with `trunc` as the default method.](https://github.com/date-fns/date-fns/pull/2571) ([#2555](https://github.com/date-fns/date-fns/issues/2555))
|
||||
|
||||
- [Added new functions: `previousDay`, `previousMonday`, `previousTuesday`, `previousWednesday`, `previousThursday`, `previousFriday`, `previousSaturday` and `previousSunday`.](https://github.com/date-fns/date-fns/pull/2522)
|
||||
|
||||
## v2.23.0 - 2021-07-23
|
||||
|
||||
Thanks to [Liam Tait](http://github.com/Liam-Tait), [fturmel](http://github.com/fturmel), [Takuya Uehara](http://github.com/indigolain), [Branislav Lazic](http://github.com/BranislavLazic), [Seyyed Morteza Moosavi](http://github.com/smmoosavi), [Felipe Armoni](http://github.com/komyg), [Sasha Koss](http://github.com/kossnocorp), [Michael Mok](http://github.com/pmmmwh), [Tan75](http://github.com/tan75) and [Maxim Topciu](http://github.com/maximtop) for working on the release.
|
||||
|
||||
### Changed
|
||||
|
||||
- [Improved `nextDay` performance by roughly 50%.](https://github.com/date-fns/date-fns/pull/2524)
|
||||
|
||||
- [Added more ordinal formatting to the Japanese locale.](https://github.com/date-fns/date-fns/pull/2471)
|
||||
|
||||
### Added
|
||||
|
||||
- [Added a new `clamp` function that allows to bound a date to an interval.](https://github.com/date-fns/date-fns/pull/2498)
|
||||
|
||||
- [Added Bosnian locale (bs).](https://github.com/date-fns/date-fns/pull/2495)
|
||||
|
||||
- [Allowed passing `undefined` in the duration to add and sub functions.](https://github.com/date-fns/date-fns/pull/2515)
|
||||
|
||||
## v2.22.1 - 2021-05-28
|
||||
|
||||
Thanks to [Sasha Koss](http://github.com/kossnocorp) for working on the release.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed constant typings. ([#2491](https://github.com/date-fns/date-fns/issues/2491))
|
||||
|
||||
## v2.22.0 - 2021-05-28
|
||||
|
||||
[Sasha Koss](http://github.com/kossnocorp), [Lucas Silva](http://github.com/LucasHFS), [Lay](http://github.com/brownsugar), [jwbth](http://github.com/jwbth), [fturmel](http://github.com/fturmel), [Tan75](http://github.com/tan75) and [Anastasia Kobzar](http://github.com/rikkalo) worked on this release.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed Taiwanese locale to use traditional Chinese and removed unnecessary spaces.](https://github.com/date-fns/date-fns/pull/2436)
|
||||
|
||||
- [Fixed Russian locale to use correct long formats.](https://github.com/date-fns/date-fns/pull/2478)
|
||||
|
||||
### Added
|
||||
|
||||
- [Added 18 new conversion functions](https://github.com/date-fns/date-fns/pull/2433):
|
||||
- `daysToWeeks`
|
||||
- `hoursToMilliseconds`
|
||||
- `hoursToMinutes`
|
||||
- `hoursToSeconds`
|
||||
- `millisecondsToHours`
|
||||
- `millisecondsToMinutes`
|
||||
- `millisecondsToSeconds`
|
||||
- `minutesToHours`
|
||||
- `minutesToMilliseconds`
|
||||
- `minutesToSeconds`
|
||||
- `monthsToQuarters`
|
||||
- `monthsToYears`
|
||||
- `quartersToMonths`
|
||||
- `quartersToYears`
|
||||
- `secondsToHours`
|
||||
- `secondsToMilliseconds`
|
||||
- `secondsToMinutes`
|
||||
- `weeksToDays`
|
||||
- `yearsToMonths`
|
||||
- `yearsToQuarters`
|
||||
|
||||
## v2.21.3 - 2021-05-08
|
||||
|
||||
This release is brought to you by [Maxim Topciu](http://github.com/maximtop).
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed IE11 support by babelifing the shorthand properties.](https://github.com/date-fns/date-fns/pull/2467)
|
||||
|
||||
## v2.21.2 - 2021-05-05
|
||||
|
||||
Kudos to [Aleksei Korzun](http://github.com/a-korzun), [Maxim Topciu](http://github.com/maximtop), [Jonas L](http://github.com/jooola), [Mohammad ali Ali panah](http://github.com/always-maap) and [Tan75](http://github.com/tan75) for working on the release.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [`differenceInBusinessDays` now returns `NaN` instead of `Invalid Date` when an invalid argument is passed to the function.](https://github.com/date-fns/date-fns/pull/2414)
|
||||
|
||||
- [Fixed `weekStartsOn` in Persian locale.](https://github.com/date-fns/date-fns/pull/2430)
|
||||
|
||||
## v2.21.1 - 2021-04-15
|
||||
|
||||
Thanks to [Sasha Koss](http://github.com/kossnocorp) for working on the release.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed a breaking change introduced by using modern default argument value syntax (see https://github.com/Hacker0x01/react-datepicker/issues/2870).](https://github.com/date-fns/date-fns/pull/2423)
|
||||
|
||||
## v2.21.0 - 2021-04-14
|
||||
|
||||
This release is brought to you by [Aleksei Korzun](http://github.com/a-korzun), [Tan75](http://github.com/tan75), [Rubens Mariuzzo](http://github.com/rmariuzzo), [Christoph Stenglein](http://github.com/cstenglein) and [Clément Tamisier](http://github.com/ctamisier).
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Made `formatDistanceStrict` return `12 months` instead of `1 year` when `unit: 'month'`.](https://github.com/date-fns/date-fns/pull/2411)
|
||||
|
||||
### Added
|
||||
|
||||
- [Added Haitian Creole (`ht`) locale.](https://github.com/date-fns/date-fns/pull/2396)
|
||||
- [Added Austrian German (`de-AT`) locale.](https://github.com/date-fns/date-fns/pull/2362)
|
||||
|
||||
## v2.20.3 - 2021-04-13
|
||||
|
||||
Kudos to [fturmel](http://github.com/fturmel) for working on the release.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed broken tree-shaking caused by missing links to corresponding ESM.](https://github.com/date-fns/date-fns/pull/2339) ([#2207](https://github.com/date-fns/date-fns/issues/2207))
|
||||
|
||||
## v2.20.2 - 2021-04-12
|
||||
|
||||
Kudos to [Maxim Topciu](http://github.com/maximtop) for working on the release.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed IE11 incompatibility caused by the usage of spread syntax.](https://github.com/date-fns/date-fns/pull/2407) ([#2408](https://github.com/date-fns/date-fns/issues/2408))
|
||||
|
||||
## v2.20.1 - 2021-04-09
|
||||
|
||||
This release is brought to you by [Sasha Koss](http://github.com/kossnocorp) and [Tan75](http://github.com/tan75).
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed `isDate` Flow typings that we broke in `v2.20.0`.
|
||||
|
||||
## v2.20.0 - 2021-04-08
|
||||
|
||||
This release is brought to you by [Sasha Koss](http://github.com/kossnocorp), [Maxim Topciu](http://github.com/maximtop), [tu4mo](http://github.com/tu4mo), [Tan75](http://github.com/tan75), [Ardit Dine](http://github.com/arditdine), [Carl Rosell](http://github.com/CarlRosell), [Roman Mahotskyi](http://github.com/enheit), [Mateusz Krzak](http://github.com/mateuszkrzak), [fgottschalk](http://github.com/fgottschalk), [Anastasia Kobzar](http://github.com/rikkalo), [Bilguun Ochirbat](http://github.com/bilguun0203), [Lesha Koss](http://github.com/leshakoss), [YuLe](http://github.com/yuler) and [guyroberts21](http://github.com/guyroberts21).
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Made `formatDistanceStrict` and `formatDistanceToNowStrict` always return `1 year` instead of `12 months`.](https://github.com/date-fns/date-fns/pull/2391) ([#2388](https://github.com/date-fns/date-fns/issues/2388))
|
||||
|
||||
- Fixed `nextDay`, `nextMonday` and `nextTuesday` missing in exports and type definitions. ([#2325](https://github.com/date-fns/date-fns/issues/2325))
|
||||
|
||||
- [Fixed a DST bug in `formatDistanceStrict`.](https://github.com/date-fns/date-fns/pull/2329) ([#2307](https://github.com/date-fns/date-fns/issues/2307))
|
||||
|
||||
### Added
|
||||
|
||||
- [Added new `eachMinuteOfInterval` function.](https://github.com/date-fns/date-fns/pull/2382)
|
||||
|
||||
- [Added Albanian (`sq`) locale](https://github.com/date-fns/date-fns/pull/2290)
|
||||
|
||||
- [Added Mongolian (`mn`) locale](https://github.com/date-fns/date-fns/pull/1961)
|
||||
|
||||
- [Added `nextWednesday`, `nextThursday`, `nextFriday`, `nextSaturday` and `nextSunday`.](https://github.com/date-fns/date-fns/pull/2291)
|
||||
|
||||
## v2.19.0 - 2021-03-05
|
||||
|
||||
[Tan75](http://github.com/tan75) worked on this release.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Assigned the correct `firstWeekContainsDate` value (`4`) for the French locale.](https://github.com/date-fns/date-fns/pull/2273) ([#2148](https://github.com/date-fns/date-fns/issues/2148))
|
||||
|
||||
- [Fixed torsdag abbreviation in the Swedish locale.](https://github.com/date-fns/date-fns/pull/2220)
|
||||
|
||||
- [Fixed a bug in `differenceInMonths` and `intervalToDuration` that occurs when dealing with the 28th of February.](https://github.com/date-fns/date-fns/pull/2256) ([#2255](https://github.com/date-fns/date-fns/issues/2255))
|
||||
|
||||
### Added
|
||||
|
||||
- [Added new functions: `nextDay`, `nextMonday` and `nextTuesday` that allows getting the next day of the week, Monday or Tuesday respectively.](https://github.com/date-fns/date-fns/pull/2214)
|
||||
|
||||
## v2.18.0 - 2021-03-01
|
||||
|
||||
Thanks to [Tan75](http://github.com/tan75) and [Lesha Koss](http://github.com/leshakoss).
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed documentation missing for `intlFormat`.](https://github.com/date-fns/date-fns/pull/2259) ([#2258](https://github.com/date-fns/date-fns/issues/2258))
|
||||
|
||||
- [Fixed date formats in the Latvian locale.](https://github.com/date-fns/date-fns/pull/2205) ([#2202](https://github.com/date-fns/date-fns/issues/2202))
|
||||
|
||||
### Added
|
||||
|
||||
- [Added support of positive and negative offsets in `parseJSON`.](https://github.com/date-fns/date-fns/pull/2200) ([#2149](https://github.com/date-fns/date-fns/issues/2149))
|
||||
|
||||
## [2.17.0] - 2021-02-05
|
||||
|
||||
Kudos to [@shaykav](https://github.com/date-fns/date-fns/pull/1952), [@davidgape89](https://github.com/davidgape89), [@rikkalo](https://github.com/rikkalo), [@tan75](https://github.com/tan75), [@talgautb](https://github.com/talgautb), [@owenl131](https://github.com/owenl131), [@kylesezhi](https://github.com/kylesezhi), [@inigoiparragirre](https://github.com/inigoiparragirre), [@gius](https://github.com/gius), [@Endeauvirr](https://github.com/Endeauvirr) and [@frankyston](https://github.com/frankyston).
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed Russian locale parsing issue](https://github.com/date-fns/date-fns/pull/1950).
|
||||
|
||||
- [Fixed `differenceInMonths` for edge cases, such as the end of February dates](https://github.com/date-fns/date-fns/pull/2185).
|
||||
|
||||
- [Fixed suffixes for the Kazakh locale](https://github.com/date-fns/date-fns/pull/2010).
|
||||
|
||||
- [Fixed `formatDuration` week translation in `pt` and `pt-BR` locales](https://github.com/date-fns/date-fns/pull/2125).
|
||||
|
||||
- [Made Japanese locale to use the correct value for the start of the week](https://github.com/date-fns/date-fns/pull/2099).
|
||||
|
||||
- [Adjusted date formats in the Basque locale](https://github.com/date-fns/date-fns/pull/2080).
|
||||
|
||||
- [Fixed the short and medium date formats in the Czech locale](https://github.com/date-fns/date-fns/pull/2111).
|
||||
|
||||
- [Adjusted the Polish translations of `formatDistance`](https://github.com/date-fns/date-fns/pull/2187).
|
||||
|
||||
- [Fixed the week's abbreviations in the Brazilian Portuguese](https://github.com/date-fns/date-fns/pull/2170).
|
||||
|
||||
### Added
|
||||
|
||||
- [Added `intlFormat`](https://github.com/date-fns/date-fns/pull/2172) a lightweight formatting function that uses [Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl). Eventually, it will become the default formatting function, so it's highly recommended for new code.
|
||||
|
||||
- [Added `en-ZA` locale](https://github.com/date-fns/date-fns/pull/1952).
|
||||
|
||||
- [Added an ability to format lowercase am/pm with `aaa` and `bbb` tokens](https://github.com/date-fns/date-fns/pull/2016).
|
||||
|
||||
- [Added ordinal formatting for Japanese year values](https://github.com/date-fns/date-fns/pull/2177/files).
|
||||
|
||||
## [2.16.1] - 2020-07-31
|
||||
|
||||
Kudos to [@aleksaps](https://github.com/aleksaps), [@leedriscoll](https://github.com/leedriscoll) and [@BanForFun](https://github.com/BanForFun) for pull-requests!
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed a typo in Scottish Gaelic (gd) locale](https://github.com/date-fns/date-fns/pull/1925).
|
||||
- [Fixed typos in Serbian Latin locale](https://github.com/date-fns/date-fns/pull/1928).
|
||||
- [Fixed greek grammar for Saturday on `formatRelative`](https://github.com/date-fns/date-fns/pull/1930).
|
||||
- Removed locale snapshots from the npm package making it lighter.
|
||||
|
||||
## [2.16.0] - 2020-08-27
|
||||
|
||||
Kudos to [@jvpelt](https://github.com/jvpelt), [@piotrl](https://github.com/piotrl), [@yotamofek](https://github.com/yotamofek), [@dwaxweiler](https://github.com/dwaxweiler), [@leedriscoll](https://github.com/leedriscoll) and [@bradevans](https://github.com/bradevans) for working on the release. Also thanks to [@PascalHonegger](https://github.com/PascalHonegger), [@pickfire](https://github.com/pickfire), [@TheJaredWilcurt](https://github.com/TheJaredWilcurt), [@SidKH](https://github.com/SidKH) and [@nfantone](https://github.com/nfantone) for improving the documentation.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Added correct translations for Welsh `1 minute` and `2 days`](https://github.com/date-fns/date-fns/pull/1903).
|
||||
- [Fixed `formatRFC3339` formatting timezone offset with minutes](https://github.com/date-fns/date-fns/pull/1890).
|
||||
- [Added missing locale type definition for `formatDuration`](https://github.com/date-fns/date-fns/pull/1881)
|
||||
- [Fixed Scottish Gaelic locale issues](https://github.com/date-fns/date-fns/pull/1914).
|
||||
|
||||
### Changed
|
||||
|
||||
- [Used shorter Hebrew alternative for "about"](https://github.com/date-fns/date-fns/pull/1893).
|
||||
- [Improved string arguments warning after upgrading to v2](https://github.com/date-fns/date-fns/pull/1910).
|
||||
|
||||
### Added
|
||||
|
||||
- [Added Luxembourgish (lb) locale](https://github.com/date-fns/date-fns/pull/1900).
|
||||
|
||||
## [2.15.0] - 2020-07-17
|
||||
|
||||
Thanks to [@belgamo](https://github.com/belgamo), [@Matsuuu](https://github.com/Matsuuu), [@Imballinst](https://github.com/Imballinst), [@arsnyder16](https://github.com/arsnyder16), [@pankajupadhyay29](https://github.com/pankajupadhyay29), [@DCBN](https://github.com/DCBN), [@leedriscoll](https://github.com/leedriscoll), [@gottsohn](https://github.com/gottsohn), [@mukuljainx](https://github.com/mukuljainx) and [@dtriana](https://github.com/dtriana) for working on the release. Also kudos to [@KidkArolis](https://github.com/KidkArolis), [@imgx64](https://github.com/imgx64), [@fjc0k](https://github.com/fjc0k), [@wmonk](https://github.com/wmonk), [@djD-REK](https://github.com/djD-REK), [@dandv](https://github.com/dandv), [@psimk](https://github.com/psimk) and [@brimworks](https://github.com/brimworks) for improving the documentation.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed behavior of `addBusinessDays` when input date is a weekend day](https://github.com/date-fns/date-fns/pull/1790).
|
||||
- [Fixed `parseISO` not returning `Invalid Date` on incorrect string when there are spaces in it](https://github.com/date-fns/date-fns/pull/1791).
|
||||
- [Fixed `es` round-tripping dates with Wednesday](https://github.com/date-fns/date-fns/pull/1792).
|
||||
- [Fixed round-trip bug with `d`/`EEEE` ordering in tokens like `PPPPP`](https://github.com/date-fns/date-fns/pull/1795).
|
||||
- [Fixed issues with parsing values in Japanese](https://github.com/date-fns/date-fns/pull/1807).
|
||||
- [Fixed Hungarian breaking IE11](https://github.com/date-fns/date-fns/pull/1842).
|
||||
- [Fixed Spanish accents in Saturday and Wednesday](https://github.com/date-fns/date-fns/pull/1872).
|
||||
|
||||
### Changed
|
||||
|
||||
- [Improved the message of protected tokens error](https://github.com/date-fns/date-fns/pull/1641).
|
||||
|
||||
### Added
|
||||
|
||||
- [Added Swiss-French `fr-CH` locale](https://github.com/date-fns/date-fns/pull/1809).
|
||||
- [Added Flemish `nl-BE` locale](https://github.com/date-fns/date-fns/pull/1812).
|
||||
- [Added Scottish Gaelic `gd` locale](https://github.com/date-fns/date-fns/pull/1832).
|
||||
- [Added New Zealand English `en-NZ` locale](https://github.com/date-fns/date-fns/pull/1835).
|
||||
- [Added `isMatch` function](https://github.com/date-fns/date-fns/pull/1868).
|
||||
|
||||
## [2.14.0] - 2020-05-18
|
||||
|
||||
Kudos to [@julamb](https://github.com/julamb), [@JacobSoderblom](https://github.com/JacobSoderblom), [@justingrant](http://github.com/justingrant), [@dragunoff](https://github.com/dragunoff), [@jmate0321](https://github.com/jmate0321), [@gbhasha](https://github.com/gbhasha), [@rasck](https://github.com/rasck), [@AlbertoPdRF](https://github.com/AlbertoPdRF), [@sebastianhaberey](https://github.com/sebastianhaberey) and [@giogonzo](https://github.com/giogonzo) for working on the release!
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed DST issues with `add`, `addDays` and `addMonths`](https://github.com/date-fns/date-fns/pull/1760).
|
||||
- [Fixed "quarter" translation in the Bulgarian locale](https://github.com/date-fns/date-fns/pull/1763).
|
||||
- [Fixed `formatDistance` strings in the Hungarian locale](https://github.com/date-fns/date-fns/pull/1765).
|
||||
- [Fixed Danish month abbreviations](https://github.com/date-fns/date-fns/pull/1774).
|
||||
- [Fixed parsing of mei in the Dutch locale](https://github.com/date-fns/date-fns/pull/1774).
|
||||
- [Fixed missing preposition in `formatLong` in the Spanish locale](https://github.com/date-fns/date-fns/pull/1775).
|
||||
- [Fixed `formatRelative` in the Italian locale](https://github.com/date-fns/date-fns/pull/1777).
|
||||
|
||||
### Added
|
||||
|
||||
- [Added `eachQuarterOfInterval`](https://github.com/date-fns/date-fns/pull/1715).
|
||||
- [Added Basque (`eu`) locale](https://github.com/date-fns/date-fns/pull/1759).
|
||||
- [Added Indian English (`en-IN`) locale](https://github.com/date-fns/date-fns/pull/1767).
|
||||
- [Added `eachHourOfInterval`](https://github.com/date-fns/date-fns/pull/1776).
|
||||
|
||||
## [2.13.0] - 2020-05-06
|
||||
|
||||
Thanks to [@JorenVos](https://github.com/JorenVos), [@developergouli](https://github.com/developergouli), [@rhlowe](https://github.com/rhlowe) and [@justingrant](http://github.com/justingrant) for working on the release!
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed mei abbreviation in the Dutch locale](https://github.com/date-fns/date-fns/pull/1752).
|
||||
- [Fixed `differenceInDays` DST behavior broken in 2.12.0](https://github.com/date-fns/date-fns/pull/1754).
|
||||
|
||||
### Added
|
||||
|
||||
- [Added Kannada locale support](https://github.com/date-fns/date-fns/pull/1747).
|
||||
- [Added `formatISODuration` function](https://github.com/date-fns/date-fns/pull/1713).
|
||||
- [Added `intervalToDuration` function](https://github.com/date-fns/date-fns/pull/1713).
|
||||
|
||||
## [2.12.0] - 2020-04-09
|
||||
|
||||
Kudos to [@leshakoss](http://github.com/leshakoss), [@skyuplam](https://github.com/skyuplam), [@so99ynoodles](https://github.com/so99ynoodles), [@dkozickis](https://github.com/dkozickis), [@belgamo](https://github.com/belgamo), [@akgondber](https://github.com/akgondber), [@dcousens](https://github.com/dcousens) and [@BoomDev](https://github.com/BoomDev) for working on the release!
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed minulý štvrtok in Slovak locale](https://github.com/date-fns/date-fns/pull/1701).
|
||||
- Fixed date ordinalNumber for [ja/zh-CN/zh-TW](https://github.com/date-fns/date-fns/pull/1690) and [ko](https://github.com/date-fns/date-fns/pull/1696).
|
||||
- [Fixed quarters parsing](https://github.com/date-fns/date-fns/pull/1694).
|
||||
- [Fixed `setDay` with `weekStartsOn` != 0](https://github.com/date-fns/date-fns/pull/1639).
|
||||
- [Fixed differenceInDays across DST](https://github.com/date-fns/date-fns/pull/1630).
|
||||
- [Fixed required arguments exception message](https://github.com/date-fns/date-fns/pull/1674).
|
||||
|
||||
### Added
|
||||
|
||||
- [Added new function `formatDistanceToNowStrict`](https://github.com/date-fns/date-fns/pull/1679).
|
||||
|
||||
## [2.11.1] - 2020-03-26
|
||||
|
||||
### Fixed
|
||||
|
||||
- Rebuilt TypeScript and flow types.
|
||||
|
||||
## [2.11.0] - 2020-03-13
|
||||
|
||||
Kudos to [@oakhan3](https://github.com/oakhan3), [@Mukhammadali](https://github.com/Mukhammadali), [@altrim](https://github.com/altrim), [@leepowellcouk](https://github.com/leepowellcouk), [@amatzon](@https://github.com/amatzon), [@bryanMt](https://github.com/bryanMt), [@kalekseev](https://github.com/kalekseev), [@eugene-platov](https://github.com/eugene-platov) and [@tjrobinson](https://github.com/tjrobinson) for working on the release.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed a bug in `differenceInYears` causing incorrect results when the left date is a leap day](https://github.com/date-fns/date-fns/pull/1654).
|
||||
- [Fixed `parseISO` to work correctly around time shift dates](https://github.com/date-fns/date-fns/pull/1667).
|
||||
- [Fixed `format` to work correctly with GMT-0752/GMT-0456 and similar timezones](https://github.com/date-fns/date-fns/pull/1666).
|
||||
|
||||
### Changed
|
||||
|
||||
- [Changed `getDay` typings to return `0|1|2|3|4|5|6` instead of `number`](https://github.com/date-fns/date-fns/pull/1668).
|
||||
- [Improved Chinese locale](https://github.com/date-fns/date-fns/pull/1664):
|
||||
- Change date format to meet the national standard (GB/T 7408-2005).
|
||||
- Improve `ordinalNumber` function behavior.
|
||||
- Add prefix in `formatRelative` depending on if it's a current week or not.
|
||||
|
||||
### Added
|
||||
|
||||
- [Added Uzbek `uz` locale](https://github.com/date-fns/date-fns/pull/1648).
|
||||
- [Updated Macedonian locale for v2](https://github.com/date-fns/date-fns/pull/1649).
|
||||
- [Added Maltese `mt` locale](https://github.com/date-fns/date-fns/pull/1658).
|
||||
|
||||
## [2.10.0] - 2020-02-25
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed `formatISO` when formatting time with timezones with minute offsets > 0](https://github.com/date-fns/date-fns/pull/1599). Kudos to [@dcRUSTy](https://github.com/dcRUSTy).
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed a bug in setDay when using weekStartsOn that is not 0
|
||||
|
||||
### Added
|
||||
|
||||
- [Added `weeks` to `Duration`](https://github.com/date-fns/date-fns/pull/1592).
|
||||
- [Added `weeks` support to `add` and `sub`](https://github.com/date-fns/date-fns/pull/1592).
|
||||
- [Added details message in `throwProtectedError`](https://github.com/date-fns/date-fns/pull/1592).
|
||||
|
||||
## [2.9.0] - 2020-01-08
|
||||
|
||||
Thanks to [@mborgbrant](https://github.com/mborgbrant), [@saintplay](https://github.com/saintplay), [@mrenty](https://github.com/mrenty), [@kibertoad](https://github.com/kibertoad), [@levibuzolic](https://github.com/levibuzolic), [@Anshuman71](https://github.com/Anshuman71), [@talgautb](https://github.com/talgautb), [@filipjuza](https://github.com/filipjuza), [@tobyzerner](https://github.com/tobyzerner), [@emil9453](https://github.com/emil9453), [@fintara](https://github.com/fintara), [@pascaliske](https://github.com/pascaliske), [@rramiachraf](https://github.com/rramiachraf), [@marnusw](https://github.com/marnusw) and [@Imballinst](https://github.com/Imballinst) for working on the release.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed a bug with addBusinessDays returning the Tuesday when adding 1 day on weekends. Now it returns the Monday](https://github.com/date-fns/date-fns/pull/1588).
|
||||
- [Added missing timezone to `formatISO`](https://github.com/date-fns/date-fns/pull/1576).
|
||||
- [Removed dots from short day period names in the Kazakh locale](https://github.com/date-fns/date-fns/pull/1512).
|
||||
- [Fixed typo in formatDistance in the Czech locale](https://github.com/date-fns/date-fns/pull/1540).
|
||||
- [Fixed shortenings in the Bulgarian locale](https://github.com/date-fns/date-fns/pull/1560).
|
||||
- [Fixed regex for the May in the Portuguese locale](https://github.com/date-fns/date-fns/pull/1565).
|
||||
|
||||
### Added
|
||||
|
||||
- [Added `eachMonthOfInterval` and `eachYearOfInterval`](https://github.com/date-fns/date-fns/pull/618).
|
||||
- [Added `inclusive` option to `areIntervalsOverlapping](https://github.com/date-fns/date-fns/pull/643).
|
||||
- [Added `isExists` function that checks if the given date is exists](https://github.com/date-fns/date-fns/pull/682).
|
||||
- [Added `add` function to add seconds, minutes, hours, weeks, years in single call](https://github.com/date-fns/date-fns/pull/1581).
|
||||
- [Added `sub` function, the opposite of `add`](https://github.com/date-fns/date-fns/pull/1583).
|
||||
- [Added `Duration` type used in `add` and `sub`](https://github.com/date-fns/date-fns/pull/1583).
|
||||
- [Added Azerbaijani (az) locale](https://github.com/date-fns/date-fns/pull/1547).
|
||||
- [Added Moroccan Arabic (ar-MA) locale](https://github.com/date-fns/date-fns/pull/1578).
|
||||
|
||||
### Changed
|
||||
|
||||
- [Reduced the total minified build size by 1Kb/4%](https://github.com/date-fns/date-fns/pull/1563).
|
||||
- [Made all properties in `Locale` type optional](https://github.com/date-fns/date-fns/pull/1542).
|
||||
- [Added missing properties to `Locale` type](https://github.com/date-fns/date-fns/pull/1542).
|
||||
- [Add the locale code to `Locale` type](https://github.com/date-fns/date-fns/pull/1580).
|
||||
- [Added support of space time separator to `parseJSON`](https://github.com/date-fns/date-fns/pull/1579).
|
||||
- [Allowed up to 7 digits in milliseconds in `parseJSON`](https://github.com/date-fns/date-fns/pull/1579).
|
||||
|
||||
## [2.8.1] - 2019-11-22
|
||||
|
||||
Thanks to [@Imballinst](https://github.com/Imballinst) for the bug fix!
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Add colon between the hour and minutes for `formatRFC3339`](https://github.com/date-fns/date-fns/pull/1549). [See #1548](https://github.com/date-fns/date-fns/issues/1548).
|
||||
|
||||
## [2.8.0] - 2019-11-19
|
||||
|
||||
Kudos to [@NaridaL](https://github.com/NaridaL), [@Zyten](https://github.com/Zyten), [@Imballinst](https://github.com/Imballinst), [@leshakoss](https://github.com/leshakoss) and [@Neorth](https://github.com/Neorth) for working on the release.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Remove the next week preposition in the Swedish locale](https://github.com/date-fns/date-fns/pull/1538).
|
||||
|
||||
### Added
|
||||
|
||||
- [Added Malay (ms) locale](https://github.com/date-fns/date-fns/pull/1537).
|
||||
- [Added `formatISO`, `formatISO9075`, `formatRFC3339`, and `formatRFC7231` functions](https://github.com/date-fns/date-fns/pull/1536).
|
||||
|
||||
## [2.7.0] - 2019-11-07
|
||||
|
||||
Thanks to [@mzgajner](https://github.com/mzgajner), [@NaridaL](https://github.com/NaridaL), [@Zyten](https://github.com/Zyten), [@leshakoss](https://github.com/leshakoss), [@fintara](https://github.com/fintara), [@kpr-hellofresh](https://github.com/kpr-hellofresh) for contributing to the release.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed a mistake in the Slovenian locale](https://github.com/date-fns/date-fns/pull/1529).
|
||||
- [Fixed incorrect behavior of `parseISO` in Firefox caused by differences in `getTimezoneOffset`](https://github.com/date-fns/date-fns/pull/1495).
|
||||
|
||||
### Changed
|
||||
|
||||
- [Make object arguments types more elaborate in Flow type definitions](https://github.com/date-fns/date-fns/pull/1519).
|
||||
- [Get rid of deprecated Function in Flow type definitions](https://github.com/date-fns/date-fns/pull/1520).
|
||||
- [Allow `parseJSON` to accept strings without trailing 'Z' symbol and with up to 6 digits in the milliseconds' field](https://github.com/date-fns/date-fns/pull/1499).
|
||||
|
||||
### Added
|
||||
|
||||
- [Added Bulgarian (bg) locale](https://github.com/date-fns/date-fns/pull/1522).
|
||||
|
||||
## [2.6.0] - 2019-10-22
|
||||
|
||||
Kudos to [@marnusw](https://github.com/marnusw), [@cdrikd](https://github.com/cdrikd) and [@rogyvoje](https://github.com/rogyvoje) for working on the release!
|
||||
|
||||
### Added
|
||||
|
||||
- [Added `parseJSON` - lightweight function (just 411 B) that parses dates formatted with `toJSON`](https://github.com/date-fns/date-fns/pull/1463).
|
||||
- [Added the language code to each locale](https://github.com/date-fns/date-fns/pull/1489).
|
||||
- [Added `subBusinessDays` function](https://github.com/date-fns/date-fns/pull/1491).
|
||||
- [Added both Serbian - cyrillic (sr) and latin (sr-Latn) locales](https://github.com/date-fns/date-fns/pull/1494).
|
||||
|
||||
## [2.5.1] - 2019-10-18
|
||||
|
||||
Thanks to [@mitchellbutler](https://github.com/mitchellbutler) for the bug fix!
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed infinite loop in `addBusinessDays`](https://github.com/date-fns/date-fns/pull/1486).
|
||||
|
||||
## [2.5.0] - 2019-10-16
|
||||
|
||||
Kudos to [@dkozickis](https://github.com/dkozickis), [@drugoi](https://github.com/drugoi), [@kranthilakum](https://github.com/kranthilakum), [@102](https://github.com/102), [@gpetrioli](https://github.com/gpetrioli) and [@JulienMalige](https://github.com/JulienMalige) for making the release happen.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed compatibility with IE11 by removing `findIndex` from the code](https://github.com/date-fns/date-fns/pull/1457).
|
||||
- [Fixed Greek locale patterns](https://github.com/date-fns/date-fns/pull/1480).
|
||||
|
||||
### Added
|
||||
|
||||
- [Added Kazakh (kk) locale](https://github.com/date-fns/date-fns/pull/1460).
|
||||
- [Added Telugu (te) locale](https://github.com/date-fns/date-fns/pull/1464).
|
||||
- [Added Canadian French (fr-CA) locale](https://github.com/date-fns/date-fns/issues/1465).
|
||||
- [Added Australian English (en-AU) locale](https://github.com/date-fns/date-fns/pull/1470).
|
||||
- [Exported `Interval` and `Locale` types from Flow typings](https://github.com/date-fns/date-fns/pull/1475).
|
||||
|
||||
## [2.4.1] - 2019-09-28
|
||||
|
||||
Thanks to [@mrclayman](https://github.com/mrclayman) for reporting the issue and [@leshakoss](https://github.com/leshakoss) for fixing it.
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed am/pm mixup in the Czech locale](https://github.com/date-fns/date-fns/pull/1453).
|
||||
|
||||
## [2.4.0] - 2019-09-27
|
||||
|
||||
This release is brought to you by these amazing people: [@lovelovedokidoki](https://github.com/lovelovedokidoki), [@alexigityan](https://github.com/alexigityan), [@kalekseev](https://github.com/kalekseev) and [@andybangs](https://github.com/andybangs). You rock!
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed Vietnamese parsing patterns](https://github.com/date-fns/date-fns/pull/1445).
|
||||
- [Fixed Czech parsing regexes](https://github.com/date-fns/date-fns/pull/1446).
|
||||
- [Fixed offset for Eastern Hemisphere in `parseISO`](https://github.com/date-fns/date-fns/pull/1450).
|
||||
|
||||
### Added
|
||||
|
||||
- [Added Armenian locale support](https://github.com/date-fns/date-fns/pull/1448).
|
||||
|
||||
## [2.3.0] - 2019-09-24
|
||||
|
||||
Huge thanks to [@lovelovedokidoki](https://github.com/lovelovedokidoki) who improved 8 (!) locales in an unstoppable open-source rampage and [@VesterDe](https://github.com/VesterDe) for fixing Slovenian locale 👏
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed the translation of "yesterday" in the Slovenian locale](https://github.com/date-fns/date-fns/pull/1420).
|
||||
- [Fixed French parsing issues with June and August](https://github.com/date-fns/date-fns/pull/1430).
|
||||
- [Improved Turkish parsing](https://github.com/date-fns/date-fns/pull/1432).
|
||||
- [Fixed "March" in Dutch parsing patterns](https://github.com/date-fns/date-fns/pull/1433).
|
||||
- [Fixed Hindi parsing patterns](https://github.com/date-fns/date-fns/pull/1434).
|
||||
|
||||
### Added
|
||||
|
||||
- [Added Finnish matching patterns](https://github.com/date-fns/date-fns/pull/1425).
|
||||
- [Accept abbreviated March, June, July in Norwegian locales](https://github.com/date-fns/date-fns/pull/1431).
|
||||
- [Added parsing for Greek months with long formatting](https://github.com/date-fns/date-fns/pull/1435).
|
||||
|
||||
## [2.2.1] - 2019-09-12
|
||||
|
||||
Kudos to date-fns contributors: [@mzgajner](https://github.com/mzgajner), [@sibiraj-s](https://github.com/sibiraj-s), [@mukeshmandiwal](https://github.com/mukeshmandiwal), [@SneakyFish5](https://github.com/SneakyFish5) and [@CarterLi](https://github.com/CarterLi).
|
||||
|
||||
### Added
|
||||
|
||||
- [Added new `set` function](https://github.com/date-fns/date-fns/pull/1398).
|
||||
- [Updated Slovenian (sl) locale for v2](https://github.com/date-fns/date-fns/pull/1418).
|
||||
- [Added Tamil (ta) locale](https://github.com/date-fns/date-fns/pull/1411).
|
||||
- [Added Hindi (hi) locale](https://github.com/date-fns/date-fns/pull/1409).
|
||||
- [Added support of `\n` in `format`, `lightFormat` and `parse`](https://github.com/date-fns/date-fns/pull/1417).
|
||||
|
||||
## [2.1.0] - 2019-09-06
|
||||
|
||||
Thanks to date-fns contributors: [@ManadayM](https://github.com/ManadayM), [@illuminist](https://github.com/illuminist), [@visualfanatic](https://github.com/visualfanatic), [@vsaarinen](https://github.com/vsaarinen) and at last but not the least [@leshakoss](https://github.com/leshakoss)!
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Set start of the week to Sunday for Thai locale](https://github.com/date-fns/date-fns/pull/1402).
|
||||
- [Fixed month matching in Polish locale](https://github.com/date-fns/date-fns/pull/1404).
|
||||
- [Fixed `eachWeekendOfInterval` skipping the first date in the supplied interval](https://github.com/date-fns/date-fns/pull/1407).
|
||||
|
||||
### Added
|
||||
|
||||
- [Added Gujarati locale](https://github.com/date-fns/date-fns/pull/1400).
|
||||
|
||||
## [2.0.1] - 2019-08-23
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fix](https://github.com/date-fns/date-fns/pull/1046) `getWeekOfMonth` with `options.weekStartsOn` set to 1 [not working for Sundays](https://github.com/date-fns/date-fns/issues/1040). Kudos to [@waseemahmad31](https://github.com/waseemahmad31)!
|
||||
|
||||
## [2.0.0] - 2019-08-20
|
||||
|
||||
If you're upgrading from v2 alpha or beta, [see the pre-release changelog](https://gist.github.com/kossnocorp/a307a464760b405bb78ef5020a4ab136).
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed the `toDate` bug occurring when parsing ISO-8601 style dates (but not valid ISO format)
|
||||
with a trailing Z (e.g `2012-01Z`), it returned Invalid Date for FireFox/IE11 [#510](https://github.com/date-fns/date-fns/issue/510)
|
||||
|
||||
- Fixed `differenceIn...` functions returning negative zero in some cases:
|
||||
[#692](https://github.com/date-fns/date-fns/issues/692)
|
||||
|
||||
- `isDate` now works properly with dates passed across iframes [#754](https://github.com/date-fns/date-fns/pull/754).
|
||||
|
||||
- Fixed a few bugs that appeared in timezones with offsets that include seconds (e.g. GMT+00:57:44).
|
||||
See PR [#789](https://github.com/date-fns/date-fns/pull/789).
|
||||
|
||||
- [Fixed DST issue](https://github.com/date-fns/date-fns/pull/1003). See [#972](https://github.com/date-fns/date-fns/issues/972) and [#992](https://github.com/date-fns/date-fns/issues/992) for more details.
|
||||
|
||||
- Fixed DST issue in `eachDayOfInterval` that caused time in the days
|
||||
after DST change to have the shift as well.
|
||||
|
||||
- Fixed bug in Galician locale caused by incorrect usage of `getHours`
|
||||
instead of `getUTCHours`.
|
||||
|
||||
### Changed
|
||||
|
||||
- **BREAKING**: now functions don't accept string arguments, but only
|
||||
numbers or dates. When a string is passed, it will result in
|
||||
an unexpected result (`Invalid Date`, `NaN`, etc).
|
||||
|
||||
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](https://blog.date-fns.org/post/we-cut-date-fns-v2-minimal-build-size-down-to-300-bytes-and-now-its-the-smallest-date-library-18f2nvh2z0yal) for more details.
|
||||
|
||||
```javascript
|
||||
// Before v2.0.0
|
||||
addDays('2016-01-01', 1)
|
||||
|
||||
// v2.0.0 onward
|
||||
addDays(parseISO('2016-01-01'), 1)
|
||||
```
|
||||
|
||||
- **BREAKING**: new format string API for `format` function
|
||||
which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).
|
||||
See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.
|
||||
|
||||
| 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'
|
||||
```
|
||||
|
||||
- **BREAKING**: function submodules now use camelCase naming schema:
|
||||
|
||||
```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'
|
||||
```
|
||||
|
||||
- **BREAKING**: min and max functions now accept an array of dates
|
||||
rather than spread arguments.
|
||||
|
||||
```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)
|
||||
```
|
||||
|
||||
- **BREAKING**: make the second argument of `format` required for the sake of explicitness.
|
||||
|
||||
```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")
|
||||
```
|
||||
|
||||
- **BREAKING** renamed ISO week-numbering year helpers:
|
||||
|
||||
- `addISOYears` → `addISOWeekYears`
|
||||
- `differenceInCalendarISOYears` → `differenceInCalendarISOWeekYears`
|
||||
- `differenceInISOYears` → `differenceInISOWeekYears`
|
||||
- `endOfISOYear` → `endOfISOWeekYear`
|
||||
- `getISOYear` → `getISOWeekYear`
|
||||
- `isSameISOYear` → `isSameISOWeekYear`
|
||||
- `lastDayOfISOYear` → `lastDayOfISOWeekYear`
|
||||
- `setISOYear` → `setISOWeekYear`
|
||||
- `subISOYears` → `subISOWeekYears`
|
||||
|
||||
i.e. "ISO year" renamed to "ISO week year", which is short for
|
||||
[ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).
|
||||
It makes them consistent with locale-dependent week-numbering year helpers,
|
||||
e.g., `startOfWeekYear`.
|
||||
|
||||
- **BREAKING**: functions renamed:
|
||||
|
||||
- `areRangesOverlapping` → `areIntervalsOverlapping`
|
||||
- `eachDay` → `eachDayOfInterval`
|
||||
- `getOverlappingDaysInRanges` → `getOverlappingDaysInIntervals`
|
||||
- `isWithinRange` → `isWithinInterval`
|
||||
|
||||
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),
|
||||
})
|
||||
```
|
||||
|
||||
- **BREAKING**: functions renamed:
|
||||
|
||||
- `distanceInWords` → `formatDistance`
|
||||
- `distanceInWordsStrict` → `formatDistanceStrict`
|
||||
- `distanceInWordsToNow` → `formatDistanceToNow`
|
||||
|
||||
to make them consistent with `format` and `formatRelative`.
|
||||
|
||||
- **BREAKING**: The order of arguments of `distanceInWords` and `distanceInWordsStrict`
|
||||
is swapped to make them consistent with `differenceIn...` functions.
|
||||
|
||||
```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'
|
||||
```
|
||||
|
||||
- **BREAKING**: `partialMethod` option in `formatDistanceStrict` is renamed to `roundingMethod`.
|
||||
|
||||
```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'
|
||||
```
|
||||
|
||||
- **BREAKING**: in `formatDistanceStrict`, if `roundingMethod` is not specified,
|
||||
it now defaults to `round` instead of `floor`.
|
||||
|
||||
- **BREAKING**: `unit` option in `formatDistanceStrict` now accepts one of the strings:
|
||||
'second', 'minute', 'hour', 'day', 'month' or 'year' instead of 's', 'm', 'h', 'd', 'M' or 'Y'
|
||||
|
||||
```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' }
|
||||
)
|
||||
```
|
||||
|
||||
- **BREAKING**: `parse` that previously used to convert strings and
|
||||
numbers to dates now parses only strings in an arbitrary format
|
||||
specified as an argument. Use `toDate` to coerce numbers and `parseISO`
|
||||
to parse ISO 8601 strings.
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
- **BREAKING**: `toDate` (previously `parse`) now doesn't accept string
|
||||
arguments but only numbers and dates. `toDate` called with an invalid
|
||||
argument will return `Invalid Date`.
|
||||
|
||||
- **BREAKING**: new locale format.
|
||||
See [docs/Locale](https://date-fns.org/docs/Locale).
|
||||
Locales renamed:
|
||||
|
||||
- `en` → `en-US`
|
||||
- `zh_cn` → `zh-CN`
|
||||
- `zh_tw` → `zh-TW`
|
||||
|
||||
```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'
|
||||
```
|
||||
|
||||
- **BREAKING**: now `closestTo` and `closestIndexTo` don't throw an exception
|
||||
when the second argument is not an array, and return Invalid Date instead.
|
||||
|
||||
- **BREAKING**: now `isValid` doesn't throw an exception
|
||||
if the first argument is not an instance of Date.
|
||||
Instead, argument is converted beforehand using `toDate`.
|
||||
|
||||
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).
|
||||
|
||||
- **BREAKING**: functions now throw `RangeError` if optional values passed to `options`
|
||||
are not `undefined` or have expected values.
|
||||
This change is introduced for consistency with ECMAScript standard library which does the same.
|
||||
|
||||
- **BREAKING**: `format`, `formatDistance` (previously `distanceInWords`) and
|
||||
`formatDistanceStrict` (previously `distanceInWordsStrict`) now throw
|
||||
`RangeError` if one of the passed arguments is invalid. It reflects behavior of
|
||||
`toISOString` and Intl API. See [#1032](https://github.com/date-fns/date-fns/pull/1032).
|
||||
|
||||
- **BREAKING**: all functions now implicitly convert arguments by following rules:
|
||||
|
||||
| | 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:
|
||||
|
||||
- as before, arguments expected to be `Date` are converted to `Date` using _date-fns'_ `toDate` function;
|
||||
- arguments expected to be numbers are converted to integer numbers using our custom `toInteger` implementation
|
||||
(see [#765](https://github.com/date-fns/date-fns/pull/765));
|
||||
- arguments expected to be strings are converted to strings using JavaScript's `String` function;
|
||||
- arguments expected to be booleans are converted to boolean using JavaScript's `Boolean` function.
|
||||
|
||||
`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:
|
||||
|
||||
- `false` for functions that return booleans (expect `isValid`);
|
||||
- `Invalid Date` for functions that return dates;
|
||||
- and `NaN` for functions that return numbers.
|
||||
|
||||
See tests and PRs [#460](https://github.com/date-fns/date-fns/pull/460) and
|
||||
[#765](https://github.com/date-fns/date-fns/pull/765) for exact behavior.
|
||||
|
||||
- **BREAKING**: all functions now check if the passed number of arguments is less
|
||||
than the number of required arguments and will throw `TypeError` exception if so.
|
||||
|
||||
- **BREAKING**: all functions that accept numbers as arguments, now coerce
|
||||
values using `Number()` and also round off decimals. Positive decimals are
|
||||
rounded using `Math.floor`, decimals less than zero are rounded using
|
||||
`Math.ceil`.
|
||||
|
||||
- **BREAKING**: The Bower & UMD/CDN package versions are no longer supported.
|
||||
|
||||
- **BREAKING**: `null` now is not a valid date. `isValid(null)` returns `false`;
|
||||
`toDate(null)` returns an invalid date. Since `toDate` is used internally
|
||||
by all the functions, operations over `null` will also return an invalid date.
|
||||
[See #537](https://github.com/date-fns/date-fns/issues/537) for the reasoning.
|
||||
|
||||
- `toDate` (previously `parse`) and `isValid` functions now accept `any` type
|
||||
as the first argument.
|
||||
|
||||
- [Exclude `docs.json` from the npm package](https://github.com/date-fns/date-fns/pull/837). Kudos to [@hawkrives](https://github.com/hawkrives).
|
||||
|
||||
### Added
|
||||
|
||||
- FP functions like those in [lodash](https://github.com/lodash/lodash/wiki/FP-Guide),
|
||||
that support [currying](https://en.wikipedia.org/wiki/Currying), and, as a consequence,
|
||||
functional-style [function composing](https://medium.com/making-internets/why-using-chain-is-a-mistake-9bc1f80d51ba).
|
||||
|
||||
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](https://date-fns.org/docs/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']
|
||||
```
|
||||
|
||||
- Added support for [ECMAScript Modules](http://www.ecma-international.org/ecma-262/6.0/#sec-modules).
|
||||
|
||||
It allows usage with bundlers that support tree-shaking,
|
||||
like [rollup.js](http://rollupjs.org) and [webpack](https://webpack.js.org):
|
||||
|
||||
```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'
|
||||
```
|
||||
|
||||
- `formatRelative` function. See [formatRelative](https://date-fns.org/docs/formatRelative)
|
||||
|
||||
- Flow typings for `index.js`, `fp/index.js`, `locale/index.js`, and their ESM equivalents.
|
||||
See PR [#558](https://github.com/date-fns/date-fns/pull/558)
|
||||
|
||||
- New locale-dependent week-numbering year helpers:
|
||||
|
||||
- `getWeek`
|
||||
|
||||
- `getWeekYear`
|
||||
|
||||
- `setWeek`
|
||||
|
||||
- `setWeekYear`
|
||||
|
||||
- `startOfWeekYear`
|
||||
|
||||
- Added `eachWeekOfInterval`, the weekly equivalent of `eachDayOfInterval`
|
||||
|
||||
- [Added `getUnixTime` function](https://github.com/date-fns/date-fns/pull/870). Kudos to [@Kingwl](https://github.com/Kingwl).
|
||||
|
||||
- [New decade helpers](https://github.com/date-fns/date-fns/pull/839). Thanks to [@y-nk](https://github.com/y-nk)!
|
||||
|
||||
- `getDecade`
|
||||
|
||||
- `startOfDecade`
|
||||
|
||||
- `endOfDecade`
|
||||
|
||||
- `lastDayOfDecade`
|
||||
|
||||
- [New `roundToNearestMinutes` function](https://github.com/date-fns/date-fns/pull/928). Kudos to [@xkizer](https://github.com/xkizer).
|
||||
|
||||
- Added new function `fromUnixTime`. Thansk to [@xkizer](https://github.com/xkizer).
|
||||
|
||||
- New interval, month, and year helpers to fetch a list of all Saturdays and Sundays (weekends) for a given date interval. `eachWeekendOfInterval` is the handler function while the other two are wrapper functions. Kudos to [@laekettavong](https://github.com/laekettavong)!
|
||||
|
||||
- `eachWeekendOfInterval`
|
||||
|
||||
- `eachWeekendOfMonth`
|
||||
|
||||
- `eachWeekendOfYear`
|
||||
|
||||
- Build-efficient `lightFormat` that only supports the popular subset of tokens. See [#1050](https://github.com/date-fns/date-fns/pull/1015).
|
||||
|
||||
- `parseISO` function that parses ISO 8601 strings. See [#1023](https://github.com/date-fns/date-fns/pull/1023).
|
||||
|
||||
- Add constants that can be imported directly from `date-fns` or the submodule `date-fns/constants`:
|
||||
|
||||
- `maxTime`
|
||||
|
||||
- `minTime`
|
||||
|
||||
- New locales:
|
||||
|
||||
- [Norwegian Nynorsk locale (nn)](https://github.com/date-fns/date-fns/pull/1172)
|
||||
by [@draperunner](https://github.com/draperunner).
|
||||
|
||||
- [Ukrainian locale (ua)](https://github.com/date-fns/date-fns/pull/532)
|
||||
by [@korzhyk](https://github.com/korzhyk).
|
||||
|
||||
- [Vietnamese locale (vi)](https://github.com/date-fns/date-fns/pull/546)
|
||||
by [@trongthanh](https://github.com/trongthanh).
|
||||
|
||||
- [Persian locale (fa-IR)](https://github.com/date-fns/date-fns/pull/1113)
|
||||
by [@mort3za](https://github.com/mort3za).
|
||||
|
||||
- [Latvian locale (lv)](https://github.com/date-fns/date-fns/pull/1175)
|
||||
by [@prudolfs](https://github.com/prudolfs).
|
||||
|
||||
- [Bengali locale (bb)](https://github.com/date-fns/date-fns/pull/845)
|
||||
by [@nutboltu](https://github.com/nutboltu) and [@touhidrahman](https://github.com/touhidrahman).
|
||||
|
||||
- [Hungarian (hu) and Lithuanian (lt) locales](https://github.com/date-fns/date-fns/pull/864)
|
||||
by [@izifortune](https://github.com/izifortune) and [pardoeryanair](https://github.com/pardoeryanair).
|
||||
|
||||
- [Canadian English locale (en-CA)](https://github.com/date-fns/date-fns/pull/688)
|
||||
by [@markowsiak](https://github.com/markowsiak).
|
||||
|
||||
- [Great Britain English locale (en-GB)](https://github.com/date-fns/date-fns/pull/563)
|
||||
by [@glintik](https://github.com/glintik).
|
||||
|
||||
- [Uighur locale (ug)](https://github.com/date-fns/date-fns/pull/1080)
|
||||
by [@abduwaly](https://github.com/abduwaly).
|
||||
|
||||
- [Added new function `differenceInBusinessDays`](https://github.com/date-fns/date-fns/pull/1194)
|
||||
which calculates the difference in business days. Kudos to [@ThorrStevens](https://github.com/ThorrStevens)!
|
||||
|
||||
- [Added new function `addBusinessDays`](https://github.com/date-fns/date-fns/pull/1154),
|
||||
similar to `addDays` but ignoring weekends. Thanks to [@ThorrStevens](https://github.com/ThorrStevens)!
|
||||
|
||||
## [1.30.1] - 2018-12-10
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Fixed DST issue](https://github.com/date-fns/date-fns/pull/1005). See [#972](https://github.com/date-fns/date-fns/issues/972) and [#992](https://github.com/date-fns/date-fns/issues/992) for more details. This fix was backported from v2.
|
||||
|
||||
- Fix a few bugs that appear in timezones with offsets that include seconds (e.g. GMT+00:57:44). See PR [#789](https://github.com/date-fns/date-fns/issues/789). This fix was backported from v2.
|
||||
|
||||
- [Fixed misspelled January in the Thai locale](https://github.com/date-fns/date-fns/pull/913). Thanks to [@ratchapol-an](https://github.com/ratchapol-an)!
|
||||
|
||||
### Added
|
||||
|
||||
- [Added Serbian locale](https://github.com/date-fns/date-fns/pull/717). Kudos to [@mawi12345](https://github.com/mawi12345)!
|
||||
|
||||
- [Added Belarusian locale](https://github.com/date-fns/date-fns/pull/716). Kudos to [@mawi12345](https://github.com/mawi12345) again!
|
||||
|
||||
### Changed
|
||||
|
||||
- [Improved ja translation of distanceInWords](https://github.com/date-fns/date-fns/pull/880). Thanks to [@kudohamu](https://github.com/kudohamu)!
|
||||
|
||||
## [1.30.0] - 2018-12-10
|
||||
|
||||
⚠️ The release got failed.
|
||||
|
||||
## [1.29.0] - 2017-10-11
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed Italian translations for `formatDistance`. ([see the issue: #550](https://github.com/date-fns/date-fns/issues/550); [see the PR: #552](https://github.com/date-fns/date-fns/pull/552))
|
||||
Thanks to [@giofilo](https://github.com/giofilo)!
|
||||
|
||||
### Added
|
||||
|
||||
- [Hungarian locale (hu)](https://github.com/date-fns/date-fns/pull/503)
|
||||
(thanks to László Horváth [@horvathlg](https://github.com/horvathlg))
|
||||
|
||||
- [Slovenian locale (sl)](https://github.com/date-fns/date-fns/pull/505)
|
||||
(thanks to Adam Stradovnik [@Neoglyph](https://github.com/Neoglyph))
|
||||
|
||||
- Added `step` to `eachDay` function. Thanks to [@BDav24](https://github.com/BDav24).
|
||||
See PR [#487](https://github.com/date-fns/date-fns/pull/487).
|
||||
|
||||
## [1.28.5] - 2017-05-19
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed a.m./p.m. formatters in Chinese Simplified locale.
|
||||
Thanks to [@fnlctrl](https://github.com/fnlctrl).
|
||||
See PR [#486](https://github.com/date-fns/date-fns/pull/486)
|
||||
|
||||
## [1.28.4] - 2017-04-26
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed accents on weekdays in the Italian locale.
|
||||
See PR [#481](https://github.com/date-fns/date-fns/pull/481).
|
||||
Thanks to [@albertorestifo](https://github.com/albertorestifo)
|
||||
|
||||
- Fixed typo in `ddd` format token in Spanish language locale.
|
||||
Kudos to [@fjaguero](https://github.com/fjaguero).
|
||||
See PR [#482](https://github.com/date-fns/date-fns/pull/482)
|
||||
|
||||
## [1.28.3] - 2017-04-14
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed ordinal numbers for Danish language locale. Thanks to [@kgram](https://github.com/kgram).
|
||||
See PR [#474](https://github.com/date-fns/date-fns/pull/474)
|
||||
|
||||
## [1.28.2] - 2017-03-27
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed `dd` and `ddd` formatters in Polish language locale. Kudos to [@justrag](https://github.com/justrag).
|
||||
See PR: [#467](https://github.com/date-fns/date-fns/pull/467)
|
||||
|
||||
## [1.28.1] - 2017-03-19
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed DST border bug in `addMilliseconds`, `addSeconds`, `addMinutes`, `addHours`,
|
||||
`subMilliseconds`, `subSeconds`, `subMinutes` and `subHours`.
|
||||
See issue [#465](https://github.com/date-fns/date-fns/issues/465)
|
||||
|
||||
- Minor fix for Indonesian locale. Thanks to [@bentinata](https://github.com/bentinata).
|
||||
See PR: [#458](https://github.com/date-fns/date-fns/pull/458)
|
||||
|
||||
## [1.28.0] - 2017-02-27
|
||||
|
||||
### Added
|
||||
|
||||
- [Romanian locale (ro)](https://github.com/date-fns/date-fns/pull/446)
|
||||
(thanks to Sergiu Munteanu [@jsergiu](https://github.com/jsergiu))
|
||||
|
||||
### Fixed
|
||||
|
||||
- All functions now convert all their arguments to the respective types.
|
||||
See PR: [#443](https://github.com/date-fns/date-fns/pull/443)
|
||||
|
||||
- Fixes for ordinals (1er, 2, 3, …) in French locale.
|
||||
Thanks to [@fbonzon](https://github.com/fbonzon).
|
||||
See PR: [#449](https://github.com/date-fns/date-fns/pull/449)
|
||||
|
||||
## [1.27.2] - 2017-02-01
|
||||
|
||||
### Fixed
|
||||
|
||||
- Various fixes for Dutch locale. See PR: [#416](https://github.com/date-fns/date-fns/pull/416).
|
||||
Thanks to Ruben Stolk [@rubenstolk](https://github.com/rubenstolk)
|
||||
|
||||
## [1.27.1] - 2017-01-20
|
||||
|
||||
### Fixed
|
||||
|
||||
- Added generation of TypeScript locale sub-modules, allowing import of locales in TypeScript.
|
||||
|
||||
## [1.27.0] - 2017-01-19
|
||||
|
||||
### Added
|
||||
|
||||
- [Macedonian locale (mk)](https://github.com/date-fns/date-fns/pull/398)
|
||||
(thanks to Petar Vlahu [@vlahupetar](https://github.com/vlahupetar))
|
||||
|
||||
## [1.26.0] - 2017-01-15
|
||||
|
||||
### Added
|
||||
|
||||
- `getTime`
|
||||
|
||||
### Fixed
|
||||
|
||||
- Various fixes for Japanese locale. See PR: [395](https://github.com/date-fns/date-fns/pull/395).
|
||||
Thanks to Yamagishi Kazutoshi [@ykzts](https://github.com/ykzts)
|
||||
|
||||
## [1.25.0] - 2017-01-11
|
||||
|
||||
### Added
|
||||
|
||||
- [Bulgarian locale (bg)](https://github.com/date-fns/date-fns/pull/357)
|
||||
(thanks to Nikolay Stoynov [@arvigeus](https://github.com/arvigeus))
|
||||
|
||||
- [Czech locale (cs)](https://github.com/date-fns/date-fns/pull/386)
|
||||
(thanks to David Rus [@davidrus](https://github.com/davidrus))
|
||||
|
||||
## [1.24.0] - 2017-01-06
|
||||
|
||||
### Added
|
||||
|
||||
- [Modern Standard Arabic locale (ar)](https://github.com/date-fns/date-fns/pull/367)
|
||||
(thanks to Abdallah Hassan [@AbdallahAHO](https://github.com/AbdallahAHO))
|
||||
|
||||
## [1.23.0] - 2017-01-05
|
||||
|
||||
### Added
|
||||
|
||||
- Auto generate TypeScript and flow typings from documentation on release.
|
||||
Thanks to [@mattlewis92](https://github.com/mattlewis92).
|
||||
See related PRs: [#355](https://github.com/date-fns/date-fns/pull/355),
|
||||
[#370](https://github.com/date-fns/date-fns/pull/370)
|
||||
|
||||
- [Croatian locale (hr)](https://github.com/date-fns/date-fns/pull/365)
|
||||
(thanks to Matija Marohnić [@silvenon](https://github.com/silvenon))
|
||||
|
||||
- [Thai locale (th)](https://github.com/date-fns/date-fns/pull/362)
|
||||
(thanks to Athiwat Hirunworawongkun [@athivvat](https://github.com/athivvat))
|
||||
|
||||
- [Finnish locale (fi)](https://github.com/date-fns/date-fns/pull/361)
|
||||
(thanks to Pyry-Samuli Lahti [@Pyppe](https://github.com/Pyppe))
|
||||
|
||||
## [1.22.0] - 2016-12-28
|
||||
|
||||
### Added
|
||||
|
||||
- [Icelandic locale (is)](https://github.com/date-fns/date-fns/pull/356)
|
||||
(thanks to Derek Blank [@derekblank](https://github.com/derekblank))
|
||||
|
||||
## [1.21.1] - 2016-12-18
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed `isBefore` and `isAfter` documentation mistakes.
|
||||
|
||||
## [1.21.0] - 2016-12-16
|
||||
|
||||
### Added
|
||||
|
||||
- [Filipino locale (fil)](https://github.com/date-fns/date-fns/pull/339)
|
||||
(thanks to Ian De La Cruz [@RIanDeLaCruz](https://github.com/RIanDeLaCruz))
|
||||
|
||||
- [Danish locale (da)](https://github.com/date-fns/date-fns/pull/343)
|
||||
(kudos to Anders B. Hansen [@Andersbiha](https://github.com/Andersbiha))
|
||||
|
||||
## [1.20.1] - 2016-12-14
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed documentation for `getOverlappingDaysInRanges`.
|
||||
|
||||
## [1.20.0] - 2016-12-13
|
||||
|
||||
### Added
|
||||
|
||||
- `areRangesOverlapping` and `getOverlappingDaysInRanges`
|
||||
Thanks to Joanna T [@asia-t](https://github.com/asia-t).
|
||||
See PR: [#331](https://github.com/date-fns/date-fns/pull/331)
|
||||
|
||||
## [1.19.0] - 2016-12-13
|
||||
|
||||
### Added
|
||||
|
||||
- [Greek locale (el)](https://github.com/date-fns/date-fns/pull/334)
|
||||
(kudos to Theodoros Orfanidis [@teoulas](https://github.com/teoulas))
|
||||
|
||||
- [Slovak locale (sk)](https://github.com/date-fns/date-fns/pull/336)
|
||||
(kudos to Marek Suscak [@mareksuscak](https://github.com/mareksuscak))
|
||||
|
||||
- Added yarn support.
|
||||
Thanks to Uladzimir Havenchyk [@havenchyk](https://github.com/havenchyk).
|
||||
See PR: [#288](https://github.com/date-fns/date-fns/pull/288)
|
||||
|
||||
## [1.18.0] - 2016-12-12
|
||||
|
||||
### Added
|
||||
|
||||
- [Turkish locale (tr)](https://github.com/date-fns/date-fns/pull/329)
|
||||
(kudos to Alpcan Aydın [@alpcanaydin](https://github.com/alpcanaydin))
|
||||
|
||||
- [Korean locale (ko)](https://github.com/date-fns/date-fns/pull/327)
|
||||
(thanks to Hong Chulju [@angdev](https://github.com/angdev))
|
||||
|
||||
### Fixed
|
||||
|
||||
- `SS` and `SSS` formats in `format` are now correctly displayed with leading zeros.
|
||||
Thanks to Paul Dijou [@pauldijou](https://github.com/pauldijou).
|
||||
See PR: [#330](https://github.com/date-fns/date-fns/pull/330)
|
||||
|
||||
## [1.17.0] - 2016-12-10
|
||||
|
||||
### Added
|
||||
|
||||
- [Polish locale (pl)](https://github.com/date-fns/date-fns/pull/294)
|
||||
(thanks to Mateusz Derks [@ertrzyiks](https://github.com/ertrzyiks))
|
||||
|
||||
- [Portuguese locale (pt)](https://github.com/date-fns/date-fns/pull/316)
|
||||
(thanks to Dário Freire [@dfreire](https://github.com/dfreire))
|
||||
|
||||
- [Swedish locale (sv)](https://github.com/date-fns/date-fns/pull/311)
|
||||
(thanks to Johannes Ulén [@ejulen](https://github.com/ejulen))
|
||||
|
||||
- [French locale (fr)](https://github.com/date-fns/date-fns/pull/281)
|
||||
(thanks to Jean Dupouy [@izeau](https://github.com/izeau))
|
||||
|
||||
- Performance tests. See PR: [#289](https://github.com/date-fns/date-fns/pull/289)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed TypeScript and flow typings for `isValid`.
|
||||
See PR: [#310](https://github.com/date-fns/date-fns/pull/310)
|
||||
|
||||
- Fixed incorrect locale tests that could potentially lead to `format` bugs.
|
||||
Kudos to Mateusz Derks [@ertrzyiks](https://github.com/ertrzyiks).
|
||||
See related PRs: [#312](https://github.com/date-fns/date-fns/pull/312),
|
||||
[#320](https://github.com/date-fns/date-fns/pull/320)
|
||||
|
||||
- Minor language fixes in the documentation.
|
||||
Thanks to Vedad Šoše [@vedadsose](https://github.com/vedadsose) ([#314](https://github.com/date-fns/date-fns/pull/314))
|
||||
and Asia [@asia-t](https://github.com/asia-t) ([#318](https://github.com/date-fns/date-fns/pull/318))
|
||||
|
||||
### Changed
|
||||
|
||||
- `format` now returns `String('Invalid Date')` if the passed date is invalid.
|
||||
See PR: [#323](https://github.com/date-fns/date-fns/pull/323)
|
||||
|
||||
- `distanceInWords`, `distanceInWordsToNow`, `distanceInWordsStrict` and `format` functions now
|
||||
check if the passed locale is valid, and fallback to English locale otherwise.
|
||||
See PR: [#321](https://github.com/date-fns/date-fns/pull/321)
|
||||
|
||||
- _Internal_: use a loop instead of `Object.keys` in `buildFormattingTokensRegExp`
|
||||
to improve compatibility with older browsers.
|
||||
See PR: [#322](https://github.com/date-fns/date-fns/pull/322)
|
||||
|
||||
## [1.16.0] - 2016-12-08
|
||||
|
||||
### Added
|
||||
|
||||
- [Italian locale (it)](https://github.com/date-fns/date-fns/pull/298)
|
||||
(thanks to Alberto Restifo [@albertorestifo](https://github.com/albertorestifo))
|
||||
|
||||
- For German `buildDistanceInWordsLocale`, add nominative case translations (for distances without a suffix).
|
||||
Kudos to Asia [@asia-t](https://github.com/asia-t).
|
||||
See related PR: [#295](https://github.com/date-fns/date-fns/pull/295)
|
||||
|
||||
## [1.15.1] - 2016-12-07
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed TypeScript imports from individual modules.
|
||||
Thanks to [@mattlewis92](https://github.com/mattlewis92).
|
||||
See related PR: [#287](https://github.com/date-fns/date-fns/pull/287)
|
||||
|
||||
## [1.15.0] - 2016-12-07
|
||||
|
||||
### Added
|
||||
|
||||
- [Indonesian locale (id)](https://github.com/date-fns/date-fns/pull/299)
|
||||
(thanks to Rahmat Budiharso [@rbudiharso](https://github.com/rbudiharso))
|
||||
|
||||
- [Catalan locale (ca)](https://github.com/date-fns/date-fns/pull/300)
|
||||
(thanks to Guillermo Grau [@guigrpa](https://github.com/guigrpa))
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed some inaccuracies in Spanish locale.
|
||||
Kudos to [@guigrpa](https://github.com/guigrpa).
|
||||
See related PR: [#302](https://github.com/date-fns/date-fns/pull/302)
|
||||
|
||||
## [1.14.1] - 2016-12-06
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed broken test for Norwegian Bokmål locale.
|
||||
|
||||
## [1.14.0] - 2016-12-06
|
||||
|
||||
### Added
|
||||
|
||||
- [Norwegian Bokmål locale (nb)](https://github.com/date-fns/date-fns/pull/291)
|
||||
(thanks to Hans-Kristian Koren [@Hanse](https://github.com/Hanse))
|
||||
|
||||
## [1.13.0] - 2016-12-06
|
||||
|
||||
### Added
|
||||
|
||||
- [Chinese Traditional locale (zh_tw)](https://github.com/date-fns/date-fns/pull/283)
|
||||
(thanks to tonypai [@tpai](https://github.com/tpai)).
|
||||
|
||||
- [Dutch language locale (nl)](https://github.com/date-fns/date-fns/pull/278)
|
||||
(kudos to Jorik Tangelder [@jtangelder](https://github.com/jtangelder))
|
||||
|
||||
## [1.12.1] - 2016-12-05
|
||||
|
||||
### Fixed
|
||||
|
||||
- Added `distanceInWordsStrict` to the list of supported functions in I18n doc.
|
||||
|
||||
## [1.12.0] - 2016-12-05
|
||||
|
||||
### Added
|
||||
|
||||
- [Spanish language locale (es)](https://github.com/date-fns/date-fns/pull/269)
|
||||
(thanks to Juan Angosto [@juanangosto](https://github.com/juanangosto)).
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed flow typings for some of the functions.
|
||||
See PR: [#273](https://github.com/date-fns/date-fns/pull/273)
|
||||
|
||||
## [1.11.2] - 2016-11-28
|
||||
|
||||
### Fixed
|
||||
|
||||
- Bug in `parse` when it sometimes parses ISO week-numbering dates incorrectly.
|
||||
See PR: [#262](https://github.com/date-fns/date-fns/pull/262)
|
||||
|
||||
- Bug in some functions which caused them to handle dates earlier than 100 AD incorrectly.
|
||||
See PR: [#263](https://github.com/date-fns/date-fns/pull/263)
|
||||
|
||||
## [1.11.1] - 2016-11-24
|
||||
|
||||
### Fixed
|
||||
|
||||
- Include TypeScript typings with npm package.
|
||||
|
||||
## [1.11.0] - 2016-11-23
|
||||
|
||||
### Added
|
||||
|
||||
- `distanceInWordsStrict`.
|
||||
Kudos to [@STRML](https://github.com/STRML).
|
||||
See related PR: [#254](https://github.com/date-fns/date-fns/pull/254)
|
||||
|
||||
- [TypeScript](https://www.typescriptlang.org/) typings for all functions.
|
||||
Kudos to [@mattlewis92](https://github.com/mattlewis92).
|
||||
See related PR: [#255](https://github.com/date-fns/date-fns/pull/255)
|
||||
|
||||
## [1.10.0] - 2016-11-01
|
||||
|
||||
### Added
|
||||
|
||||
- `parse` now can parse dates that are ISO 8601 centuries (e.g., `19` and `+0019`).
|
||||
|
||||
```javascript
|
||||
var result = parse('19')
|
||||
//=> Mon Jan 01 1900 00:00:00
|
||||
```
|
||||
|
||||
- In `parse`, added ability to specify the number of additional digits
|
||||
for extended year or century format (possible values are 0, 1 or 2; default is 2).
|
||||
|
||||
```javascript
|
||||
parse('+002016-11-01')
|
||||
parse('+02016-11-01', { additionalDigits: 1 })
|
||||
parse('+2016-11-01', { additionalDigits: 0 })
|
||||
```
|
||||
|
||||
## [1.9.0] - 2016-10-25
|
||||
|
||||
### Added
|
||||
|
||||
- Got index.js imports to work with SystemJS.
|
||||
|
||||
## [1.8.1] - 2016-10-24
|
||||
|
||||
### Fixed
|
||||
|
||||
- Added Japanese and German language locales to the list in I18n doc.
|
||||
|
||||
## [1.8.0] - 2016-10-23
|
||||
|
||||
### Added
|
||||
|
||||
- [Japanese language locale (ja)](https://github.com/date-fns/date-fns/pull/241)
|
||||
(thanks to Thomas Eilmsteiner [@DeMuu](https://github.com/DeMuu) again!)
|
||||
|
||||
- `getISODay`
|
||||
|
||||
- `setISODay`
|
||||
|
||||
## [1.7.0] - 2016-10-20
|
||||
|
||||
### Added
|
||||
|
||||
- [German language locale (de)](https://github.com/date-fns/date-fns/pull/237)
|
||||
(thanks to Thomas Eilmsteiner [@DeMuu](https://github.com/DeMuu)).
|
||||
|
||||
## [1.6.0] - 2016-10-16
|
||||
|
||||
### Added
|
||||
|
||||
- [Chinese Simplified locale (zh_cn)](https://github.com/date-fns/date-fns/pull/235)
|
||||
(kudos to Changyu [@KingMario](https://github.com/KingMario) Geng).
|
||||
|
||||
## [1.5.2] - 2016-10-13
|
||||
|
||||
### Fixed
|
||||
|
||||
- Incorrectly generated docs for `format`.
|
||||
|
||||
- Fixed typo in I18n doc.
|
||||
|
||||
## [1.5.1] - 2016-10-12
|
||||
|
||||
### Fixed
|
||||
|
||||
- A change log entry for [1.5.0] is added.
|
||||
|
||||
## [1.5.0] - 2016-10-12
|
||||
|
||||
### Added
|
||||
|
||||
- [The initial I18n support](https://date-fns.org/docs/I18n)
|
||||
|
||||
## [1.4.0] - 2016-10-09
|
||||
|
||||
### Added
|
||||
|
||||
- Basic [SystemJS](https://github.com/systemjs/systemjs) support.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed incorrect behaviour of `YYYY` and `YY` for years prior to 1000:
|
||||
now `format(new Date('0001-01-01'), 'YYYY-MM-DD')` returns `0001-01-01`
|
||||
instead of `1-01-01`.
|
||||
|
||||
## [1.3.0] - 2016-05-26
|
||||
|
||||
### Added
|
||||
|
||||
- `closestIndexTo`
|
||||
|
||||
## [1.2.0] - 2016-05-23
|
||||
|
||||
### Added
|
||||
|
||||
- Added an ability to pass negative numbers to `setDay`.
|
||||
|
||||
## [1.1.1] - 2016-05-19
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed [Flow](http://flowtype.org/) declarations for some of the functions.
|
||||
|
||||
## [1.1.0] - 2016-05-19
|
||||
|
||||
### Added
|
||||
|
||||
- [Flow](http://flowtype.org/) declarations for each function
|
||||
in [the ".js.flow" style](http://flowtype.org/docs/declarations.html#declaration-files).
|
||||
Kudos to [@JohnyDays](https://github.com/JohnyDays). See related PRs:
|
||||
|
||||
- [#205](https://github.com/date-fns/date-fns/pull/205)
|
||||
|
||||
- [#207](https://github.com/date-fns/date-fns/pull/207)
|
||||
|
||||
## [1.0.0] - 2016-05-18
|
||||
|
||||
### Fixed
|
||||
|
||||
- `format` now returns the correct result for key `E`.
|
||||
|
||||
- Prevent `startOf...`, `endOf...` and `lastDayOf...` functions
|
||||
to return dates with an incorrect time when the date is modifying
|
||||
into another time zone.
|
||||
|
||||
- `parse` now parses years from 1 AD to 99 AD correctly.
|
||||
|
||||
- Fix a bug in `getISOWeek` appearing because of a changing time zone
|
||||
(e.g., when the given date is in DST and the start of the ISO year is not).
|
||||
|
||||
### Changed
|
||||
|
||||
- **BREAKING**: all functions are moved to the root of the library, so they
|
||||
are now accessible with `require('date-fns/name_of_function')` or
|
||||
`import nameOfFunction from 'date-fns/name_of_function'`.
|
||||
|
||||
```javascript
|
||||
// Before v1.0.0
|
||||
var addMonths = require('date-fns/src/add_months')
|
||||
|
||||
// v1.0.0 onward
|
||||
var addMonths = require('date-fns/add_months')
|
||||
```
|
||||
|
||||
- **BREAKING**: functions that had the last optional argument `weekStartsAt`
|
||||
(i.e. `endOfWeek`, `isSameWeek`, `lastDayOfWeek`, `setDay`, `startOfWeek`)
|
||||
now instead receive the object `options` with the property `options.weekStartsOn`
|
||||
as the last argument.
|
||||
|
||||
```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 })
|
||||
```
|
||||
|
||||
- **BREAKING**: remove the function `getTimeSinceMidnight` that was used inside
|
||||
the other functions.
|
||||
|
||||
- **BREAKING**: `differenceInDays` now returns the number of full days instead
|
||||
of calendar days.
|
||||
|
||||
- **BREAKING**: `eachDay` and `isWithinRange` now throw an exception
|
||||
when the given range boundaries are invalid.
|
||||
|
||||
- Faster `isLeapYear`.
|
||||
|
||||
- _Internal_: make the documentation more verbose.
|
||||
|
||||
- _Internal_: convert the tests from Chai to power-assert allowing them
|
||||
to run against IE8.
|
||||
|
||||
### Added
|
||||
|
||||
- `addISOYears`
|
||||
|
||||
- `closestTo`
|
||||
|
||||
- `differenceInCalendarDays`
|
||||
|
||||
- `differenceInCalendarISOWeeks`
|
||||
|
||||
- `differenceInCalendarISOYears`
|
||||
|
||||
- `differenceInCalendarMonths`
|
||||
|
||||
- `differenceInCalendarQuarters`
|
||||
|
||||
- `differenceInCalendarWeeks`
|
||||
|
||||
- `differenceInCalendarYears`
|
||||
|
||||
- `differenceInHours`
|
||||
|
||||
- `differenceInISOYears`
|
||||
|
||||
- `differenceInMilliseconds`
|
||||
|
||||
- `differenceInMinutes`
|
||||
|
||||
- `differenceInMonths`
|
||||
|
||||
- `differenceInQuarters`
|
||||
|
||||
- `differenceInSeconds`
|
||||
|
||||
- `differenceInWeeks`
|
||||
|
||||
- `differenceInYears`
|
||||
|
||||
- `distanceInWords`
|
||||
|
||||
- `distanceInWordsToNow`
|
||||
|
||||
- `endOfISOWeek`
|
||||
|
||||
- `endOfISOYear`
|
||||
|
||||
- `endOfToday`
|
||||
|
||||
- `endOfTomorrow`
|
||||
|
||||
- `endOfYesterday`
|
||||
|
||||
- `getDaysInYear`
|
||||
|
||||
- `isDate`
|
||||
|
||||
- `isFriday`
|
||||
|
||||
- `isMonday`
|
||||
|
||||
- `isSameISOWeek`
|
||||
|
||||
- `isSameISOYear`
|
||||
|
||||
- `isSaturday`
|
||||
|
||||
- `isSunday`
|
||||
|
||||
- `isThisHour`
|
||||
|
||||
- `isThisISOWeek`
|
||||
|
||||
- `isThisISOYear`
|
||||
|
||||
- `isThisMinute`
|
||||
|
||||
- `isThisMonth`
|
||||
|
||||
- `isThisQuarter`
|
||||
|
||||
- `isThisSecond`
|
||||
|
||||
- `isThisWeek`
|
||||
|
||||
- `isThisYear`
|
||||
|
||||
- `isThursday`
|
||||
|
||||
- `isTomorrow`
|
||||
|
||||
- `isTuesday`
|
||||
|
||||
- `isValid`
|
||||
|
||||
- `isWednesday`
|
||||
|
||||
- `isYesterday`
|
||||
|
||||
- `lastDayOfISOWeek`
|
||||
|
||||
- `lastDayOfISOYear`
|
||||
|
||||
- `startOfISOWeek`
|
||||
|
||||
- `startOfToday`
|
||||
|
||||
- `startOfTomorrow`
|
||||
|
||||
- `startOfYesterday`
|
||||
|
||||
- `subISOYears`
|
||||
|
||||
- Add `Qo`, `W`, `Wo`, `WW`, `GG`, `GGGG`, `Z`, `ZZ`, `X`, `x` keys to `format`.
|
||||
|
||||
## [0.17.0] - 2015-09-29
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed a lot of bugs appearing when date is modifying into other time zone
|
||||
(e.g., when adding months and original date is in DST but new date is not).
|
||||
|
||||
- Prevent instances of Date to lose milliseconds value when passed to.
|
||||
`parse` in IE10.
|
||||
|
||||
### Changed
|
||||
|
||||
- `setISOWeek` now keeps time from original date.
|
||||
|
||||
- _Internal_: reuse `getDaysInMonth` inside of `addMonths`.
|
||||
|
||||
### Added
|
||||
|
||||
- `differenceInDays`
|
||||
|
||||
- `getTimeSinceMidnight`
|
||||
|
||||
- `format` now has new format key `aa`, which returns `a.m.`/`p.m.`
|
||||
as opposed to `a` that returns `am`/`pm`.
|
||||
|
||||
- Complete UMD package (for Bower and CDN).
|
||||
|
||||
## [0.16.0] - 2015-09-01
|
||||
|
||||
### Changed
|
||||
|
||||
- Use `parse` to clean date arguments in all functions.
|
||||
|
||||
- `parse` now fallbacks to `new Date` when the argument
|
||||
is not an ISO formatted date.
|
||||
|
||||
- _Internal_: reuse `getDaysInMonth` inside of `setMonth`.
|
||||
|
||||
### Added
|
||||
|
||||
- `addQuarters`
|
||||
|
||||
- `addWeeks`
|
||||
|
||||
- `endOfQuarter`
|
||||
|
||||
- `getDate`
|
||||
|
||||
- `getDay`
|
||||
|
||||
- `getDaysInMonth`
|
||||
|
||||
- `getHours`
|
||||
|
||||
- `getISOWeeksInYear`
|
||||
|
||||
- `getMilliseconds`
|
||||
|
||||
- `getMinutes`
|
||||
|
||||
- `getMonth`
|
||||
|
||||
- `getSeconds`
|
||||
|
||||
- `getYear`
|
||||
|
||||
- `isLeapYear`
|
||||
|
||||
- `isSameHour`
|
||||
|
||||
- `isSameMinute`
|
||||
|
||||
- `isSameQuarter`
|
||||
|
||||
- `isSameSecond`
|
||||
|
||||
- `lastDayOfQuarter`
|
||||
|
||||
- `lastDayOfWeek`
|
||||
|
||||
- `max`
|
||||
|
||||
- `min`
|
||||
|
||||
- `setDate`
|
||||
|
||||
- `setDay`
|
||||
|
||||
- `setHours`
|
||||
|
||||
- `setMilliseconds`
|
||||
|
||||
- `setMinutes`
|
||||
|
||||
- `setSeconds`
|
||||
|
||||
- `startOfQuarter`
|
||||
|
||||
- `subQuarters`
|
||||
|
||||
- `subWeeks`
|
||||
|
||||
## [0.15.0] - 2015-08-26
|
||||
|
||||
### Changed
|
||||
|
||||
- `format` now returns `a.m.`/`p.m.` instead of `am`/`pm`.
|
||||
|
||||
- `setMonth` now sets last day of month if original date was last day
|
||||
of longer month.
|
||||
|
||||
- _Internal_: Fix code style according to ESLint.
|
||||
|
||||
- _Internal_: Make tests run through all time zones.
|
||||
|
||||
### Added
|
||||
|
||||
- `getQuarter`
|
||||
|
||||
- `setQuarter`
|
||||
|
||||
- `getDayOfYear`
|
||||
|
||||
- `setDayOfYear`
|
||||
|
||||
- `isPast`
|
||||
|
||||
- `addSeconds`
|
||||
|
||||
- `subSeconds`
|
||||
|
||||
- `startOfSecond`
|
||||
|
||||
- `endOfSecond`
|
||||
|
||||
- `startOfMinute`
|
||||
|
||||
- `endOfMinute`
|
||||
|
||||
- `addMilliseconds`
|
||||
|
||||
- `subMilliseconds`
|
||||
|
||||
- `endOfYear`
|
||||
|
||||
- `addYears`
|
||||
|
||||
- `subYears`
|
||||
|
||||
- `lastDayOfYear`
|
||||
|
||||
- `lastDayOfMonth`
|
||||
|
||||
## [0.14.11] - 2015-08-21
|
||||
|
||||
### Fixed
|
||||
|
||||
- `format` now uses `parse` to avoid time zone bugs.
|
||||
|
||||
### Changed
|
||||
|
||||
- `setIsoWeek` now sets time to the start of the day.
|
||||
|
||||
## [0.14.10] - 2015-07-29
|
||||
|
||||
### Fixed
|
||||
|
||||
- `format` now behaves correctly with 12:00 am.
|
||||
|
||||
- `format` now behaves correctly with ordinal numbers.
|
||||
|
||||
### Added
|
||||
|
||||
- `compareAsc`
|
||||
|
||||
- `compareDesc`
|
||||
|
||||
- `addHours`
|
||||
|
||||
- `subHours`
|
||||
|
||||
- `isSameDay`
|
||||
|
||||
- `parse`
|
||||
|
||||
- `getISOYear`
|
||||
|
||||
- `setISOYear`
|
||||
|
||||
- `startOfISOYear`
|
||||
|
||||
- `getISOWeek`
|
||||
|
||||
- `setISOWeek`
|
||||
|
||||
## [0.14.9] - 2015-01-14
|
||||
|
||||
### Fixed
|
||||
|
||||
- `addMonths` now correctly behaves with February
|
||||
(see [#18](https://github.com/js-fns/date-fns/pull/18)).
|
||||
|
||||
## [0.14.8] - 2014-12-25
|
||||
|
||||
### Fixed
|
||||
|
||||
- `format` function now behaves correctly with `pm`/`am`.
|
||||
|
||||
## [0.14.6] - 2014-12-04
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix broken Bower support.
|
||||
|
||||
## [0.14.0] - 2014-11-05
|
||||
|
||||
### Added
|
||||
|
||||
- Bower package.
|
||||
|
||||
## [0.13.0] - 2014-10-22
|
||||
|
||||
### Added
|
||||
|
||||
- `addMinutes`
|
||||
|
||||
- `subMinutes`
|
||||
|
||||
- `isEqual`
|
||||
|
||||
- `isBefore`
|
||||
|
||||
- `isAfter`
|
||||
|
||||
## [0.12.1] - 2014-10-19
|
||||
|
||||
### Fixed
|
||||
|
||||
- Incorrect rounding in `DDD` formatter.
|
||||
|
||||
## [0.12.0] - 2014-10-15
|
||||
|
||||
### Added
|
||||
|
||||
- `isSameYear`
|
||||
|
||||
## [0.11.0] - 2014-10-15
|
||||
|
||||
### Added
|
||||
|
||||
- `isWithinRange`
|
||||
|
||||
## [0.10.0] - 2014-10-13
|
||||
|
||||
### Added
|
||||
|
||||
- `format`
|
||||
|
||||
- `startOfYear`
|
||||
|
||||
## [0.9.0] - 2014-10-10
|
||||
|
||||
### Changed
|
||||
|
||||
- _Internal_: simplify `isWeekend`
|
||||
|
||||
### Added
|
||||
|
||||
- `isFuture`
|
||||
|
||||
## [0.8.0] - 2014-10-09
|
||||
|
||||
### Changed
|
||||
|
||||
- _Internal_: reuse `addDays` inside of `subDays`.
|
||||
|
||||
### Added
|
||||
|
||||
- `addMonths`
|
||||
|
||||
- `subMonths`
|
||||
|
||||
- `setMonth`
|
||||
|
||||
- `setYear`
|
||||
|
||||
## [0.7.0] - 2014-10-08
|
||||
|
||||
### Added
|
||||
|
||||
- `isSameWeek`
|
||||
|
||||
## [0.6.0] - 2014-10-07
|
||||
|
||||
### Fixed
|
||||
|
||||
- Inconsistent behavior of `endOfMonth`.
|
||||
|
||||
### Added
|
||||
|
||||
- `isFirstDayOfMonth`
|
||||
|
||||
- `isLastDayOfMonth`
|
||||
|
||||
- `isSameMonth`
|
||||
|
||||
## [0.5.0] - 2014-10-07
|
||||
|
||||
### Added
|
||||
|
||||
- `addDays`
|
||||
|
||||
- `subDays`
|
||||
|
||||
## [0.4.0] - 2014-10-07
|
||||
|
||||
### Added
|
||||
|
||||
- `startOfWeek`
|
||||
|
||||
- `endOfWeek`
|
||||
|
||||
- `eachDay`
|
||||
|
||||
## [0.3.0] - 2014-10-06
|
||||
|
||||
### Changed
|
||||
|
||||
- `startOfDay` now sets milliseconds as well.
|
||||
|
||||
### Added
|
||||
|
||||
- `endOfDay`
|
||||
|
||||
- `startOfMonth`
|
||||
|
||||
- `endOfMonth`
|
||||
|
||||
## [0.2.0] - 2014-10-06
|
||||
|
||||
### Added
|
||||
|
||||
- `isToday`
|
||||
|
||||
- `isWeekend`
|
||||
|
||||
## 0.1.0 - 2014-10-06
|
||||
|
||||
### Added
|
||||
|
||||
- `startOfDay`
|
||||
|
||||
[unreleased]: https://github.com/date-fns/date-fns/compare/v2.16.1...HEAD
|
||||
[2.16.1]: https://github.com/date-fns/date-fns/compare/v2.16.0...v2.16.1
|
||||
[2.16.0]: https://github.com/date-fns/date-fns/compare/v2.15.0...v2.16.0
|
||||
[2.15.0]: https://github.com/date-fns/date-fns/compare/v2.14.0...v2.15.0
|
||||
[2.14.0]: https://github.com/date-fns/date-fns/compare/v2.13.0...v2.14.0
|
||||
[2.13.0]: https://github.com/date-fns/date-fns/compare/v2.12.0...v2.13.0
|
||||
[2.12.0]: https://github.com/date-fns/date-fns/compare/v2.11.1...v2.12.0
|
||||
[2.11.1]: https://github.com/date-fns/date-fns/compare/v2.11.0...v2.11.1
|
||||
[2.11.0]: https://github.com/date-fns/date-fns/compare/v2.10.0...v2.11.0
|
||||
[2.10.0]: https://github.com/date-fns/date-fns/compare/v2.9.0...v2.10.0
|
||||
[2.9.0]: https://github.com/date-fns/date-fns/compare/v2.8.1...v2.9.0
|
||||
[2.8.1]: https://github.com/date-fns/date-fns/compare/v2.8.0...v2.8.1
|
||||
[2.8.0]: https://github.com/date-fns/date-fns/compare/v2.7.0...v2.8.0
|
||||
[2.7.0]: https://github.com/date-fns/date-fns/compare/v2.6.0...v2.7.0
|
||||
[2.6.0]: https://github.com/date-fns/date-fns/compare/v2.5.1...v2.6.0
|
||||
[2.5.1]: https://github.com/date-fns/date-fns/compare/v2.5.0...v2.5.1
|
||||
[2.5.0]: https://github.com/date-fns/date-fns/compare/v2.4.1...v2.5.0
|
||||
[2.4.1]: https://github.com/date-fns/date-fns/compare/v2.4.0...v2.4.1
|
||||
[2.4.0]: https://github.com/date-fns/date-fns/compare/v2.3.0...v2.4.0
|
||||
[2.3.0]: https://github.com/date-fns/date-fns/compare/v2.2.1...v2.3.0
|
||||
[2.2.1]: https://github.com/date-fns/date-fns/compare/v2.1.0...v2.2.1
|
||||
[2.1.0]: https://github.com/date-fns/date-fns/compare/v2.0.1...v2.1.0
|
||||
[2.0.1]: https://github.com/date-fns/date-fns/compare/v2.0.0...v2.0.1
|
||||
[2.0.0]: https://github.com/date-fns/date-fns/compare/v1.28.5...v2.0.0
|
||||
[1.28.5]: https://github.com/date-fns/date-fns/compare/v1.28.4...v1.28.5
|
||||
[1.28.4]: https://github.com/date-fns/date-fns/compare/v1.28.3...v1.28.4
|
||||
[1.28.3]: https://github.com/date-fns/date-fns/compare/v1.28.2...v1.28.3
|
||||
[1.28.2]: https://github.com/date-fns/date-fns/compare/v1.28.1...v1.28.2
|
||||
[1.28.1]: https://github.com/date-fns/date-fns/compare/v1.28.0...v1.28.1
|
||||
[1.28.0]: https://github.com/date-fns/date-fns/compare/v1.27.2...v1.28.0
|
||||
[1.27.2]: https://github.com/date-fns/date-fns/compare/v1.27.1...v1.27.2
|
||||
[1.27.1]: https://github.com/date-fns/date-fns/compare/v1.27.0...v1.27.1
|
||||
[1.27.0]: https://github.com/date-fns/date-fns/compare/v1.26.0...v1.27.0
|
||||
[1.26.0]: https://github.com/date-fns/date-fns/compare/v1.25.0...v1.26.0
|
||||
[1.25.0]: https://github.com/date-fns/date-fns/compare/v1.24.0...v1.25.0
|
||||
[1.24.0]: https://github.com/date-fns/date-fns/compare/v1.23.0...v1.24.0
|
||||
[1.23.0]: https://github.com/date-fns/date-fns/compare/v1.22.0...v1.23.0
|
||||
[1.22.0]: https://github.com/date-fns/date-fns/compare/v1.21.1...v1.22.0
|
||||
[1.21.1]: https://github.com/date-fns/date-fns/compare/v1.21.0...v1.21.1
|
||||
[1.21.0]: https://github.com/date-fns/date-fns/compare/v1.20.1...v1.21.0
|
||||
[1.20.1]: https://github.com/date-fns/date-fns/compare/v1.20.0...v1.20.1
|
||||
[1.20.0]: https://github.com/date-fns/date-fns/compare/v1.19.0...v1.20.0
|
||||
[1.19.0]: https://github.com/date-fns/date-fns/compare/v1.18.0...v1.19.0
|
||||
[1.18.0]: https://github.com/date-fns/date-fns/compare/v1.17.0...v1.18.0
|
||||
[1.17.0]: https://github.com/date-fns/date-fns/compare/v1.16.0...v1.17.0
|
||||
[1.16.0]: https://github.com/date-fns/date-fns/compare/v1.15.1...v1.16.0
|
||||
[1.15.1]: https://github.com/date-fns/date-fns/compare/v1.15.0...v1.15.1
|
||||
[1.15.0]: https://github.com/date-fns/date-fns/compare/v1.14.1...v1.15.0
|
||||
[1.14.1]: https://github.com/date-fns/date-fns/compare/v1.14.0...v1.14.1
|
||||
[1.14.0]: https://github.com/date-fns/date-fns/compare/v1.13.0...v1.14.0
|
||||
[1.13.0]: https://github.com/date-fns/date-fns/compare/v1.12.1...v1.13.0
|
||||
[1.12.1]: https://github.com/date-fns/date-fns/compare/v1.12.0...v1.12.1
|
||||
[1.12.0]: https://github.com/date-fns/date-fns/compare/v1.11.2...v1.12.0
|
||||
[1.11.2]: https://github.com/date-fns/date-fns/compare/v1.11.1...v1.11.2
|
||||
[1.11.1]: https://github.com/date-fns/date-fns/compare/v1.11.0...v1.11.1
|
||||
[1.11.0]: https://github.com/date-fns/date-fns/compare/v1.10.0...v1.11.0
|
||||
[1.10.0]: https://github.com/date-fns/date-fns/compare/v1.9.0...v1.10.0
|
||||
[1.9.0]: https://github.com/date-fns/date-fns/compare/v1.8.1...v1.9.0
|
||||
[1.8.1]: https://github.com/date-fns/date-fns/compare/v1.8.0...v1.8.1
|
||||
[1.8.0]: https://github.com/date-fns/date-fns/compare/v1.7.0...v1.8.0
|
||||
[1.7.0]: https://github.com/date-fns/date-fns/compare/v1.6.0...v1.7.0
|
||||
[1.6.0]: https://github.com/date-fns/date-fns/compare/v1.5.2...v1.6.0
|
||||
[1.5.2]: https://github.com/date-fns/date-fns/compare/v1.5.1...v1.5.2
|
||||
[1.5.1]: https://github.com/date-fns/date-fns/compare/v1.5.0...v1.5.1
|
||||
[1.5.0]: https://github.com/date-fns/date-fns/compare/v1.4.0...v1.5.0
|
||||
[1.4.0]: https://github.com/date-fns/date-fns/compare/v1.3.0...v1.4.0
|
||||
[1.3.0]: https://github.com/date-fns/date-fns/compare/v1.2.0...v1.3.0
|
||||
[1.2.0]: https://github.com/date-fns/date-fns/compare/v1.1.1...v1.2.0
|
||||
[1.1.1]: https://github.com/date-fns/date-fns/compare/v1.1.0...v1.1.1
|
||||
[1.1.0]: https://github.com/date-fns/date-fns/compare/v1.0.0...v1.1.0
|
||||
[1.0.0]: https://github.com/date-fns/date-fns/compare/v0.17.0...v1.0.0
|
||||
[0.17.0]: https://github.com/date-fns/date-fns/compare/v0.16.0...v0.17.0
|
||||
[0.16.0]: https://github.com/date-fns/date-fns/compare/v0.15.0...v0.16.0
|
||||
[0.15.0]: https://github.com/date-fns/date-fns/compare/v0.14.11...v0.15.0
|
||||
[0.14.11]: https://github.com/date-fns/date-fns/compare/v0.14.10...v0.14.11
|
||||
[0.14.10]: https://github.com/date-fns/date-fns/compare/v0.14.9...v0.14.10
|
||||
[0.14.9]: https://github.com/date-fns/date-fns/compare/v0.14.8...v0.14.9
|
||||
[0.14.8]: https://github.com/date-fns/date-fns/compare/v0.14.6...v0.14.8
|
||||
[0.14.6]: https://github.com/date-fns/date-fns/compare/v0.14.0...v0.14.6
|
||||
[0.14.0]: https://github.com/date-fns/date-fns/compare/v0.13.0...v0.14.0
|
||||
[0.13.0]: https://github.com/date-fns/date-fns/compare/v0.12.1...v0.13.0
|
||||
[0.12.1]: https://github.com/date-fns/date-fns/compare/v0.12.0...v0.12.1
|
||||
[0.12.0]: https://github.com/date-fns/date-fns/compare/v0.11.0...v0.12.0
|
||||
[0.11.0]: https://github.com/date-fns/date-fns/compare/v0.10.0...v0.11.0
|
||||
[0.10.0]: https://github.com/date-fns/date-fns/compare/v0.9.0...v0.10.0
|
||||
[0.9.0]: https://github.com/date-fns/date-fns/compare/v0.8.0...v0.9.0
|
||||
[0.8.0]: https://github.com/date-fns/date-fns/compare/v0.7.0...v0.8.0
|
||||
[0.7.0]: https://github.com/date-fns/date-fns/compare/v0.6.0...v0.7.0
|
||||
[0.6.0]: https://github.com/date-fns/date-fns/compare/v0.5.0...v0.6.0
|
||||
[0.5.0]: https://github.com/date-fns/date-fns/compare/v0.4.0...v0.5.0
|
||||
[0.4.0]: https://github.com/date-fns/date-fns/compare/v0.3.0...v0.4.0
|
||||
[0.3.0]: https://github.com/date-fns/date-fns/compare/v0.2.0...v0.3.0
|
||||
[0.2.0]: https://github.com/date-fns/date-fns/compare/v0.1.0...v0.2.0
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 Sasha Koss and Lesha Koss https://kossnocorp.mit-license.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
<p align="center">
|
||||
<a href="https://date-fns.org/">
|
||||
<img alt="date-fns" title="date-fns" src="https://raw.githubusercontent.com/date-fns/date-fns/master/docs/logotype.svg" width="300" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<b>date-fns</b> provides the most comprehensive, yet simple and consistent toolset
|
||||
<br>
|
||||
for manipulating <b>JavaScript dates</b> in <b>a browser</b> & <b>Node.js</b>.</b>
|
||||
</p>
|
||||
|
||||
<div align="center">
|
||||
|
||||
[📖 Documentation](https://date-fns.org/docs/Getting-Started/) | [🧑💻 JavaScript Jobs](https://jobs.date-fns.org/)
|
||||
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
# It's like [Lodash](https://lodash.com) for dates
|
||||
|
||||
- It has [**200+ functions** for all occasions](https://date-fns.org/docs/Getting-Started/).
|
||||
- **Modular**: Pick what you need. Works with webpack, Browserify, or Rollup and also supports tree-shaking.
|
||||
- **Native dates**: Uses existing native type. It doesn't extend core objects for safety's sake.
|
||||
- **Immutable & Pure**: Built using pure functions and always returns a new date instance.
|
||||
- **TypeScript & Flow**: Supports both Flow and TypeScript
|
||||
- **I18n**: Dozens of locales. Include only what you need.
|
||||
- [and many more benefits](https://date-fns.org/)
|
||||
|
||||
```js
|
||||
import { compareAsc, format } from 'date-fns'
|
||||
|
||||
format(new Date(2014, 1, 11), 'yyyy-MM-dd')
|
||||
//=> '2014-02-11'
|
||||
|
||||
const dates = [
|
||||
new Date(1995, 6, 2),
|
||||
new Date(1987, 1, 11),
|
||||
new Date(1989, 6, 10),
|
||||
]
|
||||
dates.sort(compareAsc)
|
||||
//=> [
|
||||
// Wed Feb 11 1987 00:00:00,
|
||||
// Mon Jul 10 1989 00:00:00,
|
||||
// Sun Jul 02 1995 00:00:00
|
||||
// ]
|
||||
```
|
||||
|
||||
The library is available as an [npm package](https://www.npmjs.com/package/date-fns).
|
||||
To install the package run:
|
||||
|
||||
```bash
|
||||
npm install date-fns --save
|
||||
# or with yarn
|
||||
yarn add date-fns
|
||||
```
|
||||
|
||||
## Docs
|
||||
|
||||
[See date-fns.org](https://date-fns.org/) for more details, API,
|
||||
and other docs.
|
||||
|
||||
<br />
|
||||
<!-- END OF README-JOB SECTION -->
|
||||
|
||||
## License
|
||||
|
||||
[MIT © Sasha Koss](https://kossnocorp.mit-license.org/)
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = addLeadingZeros;
|
||||
function addLeadingZeros(number, targetLength) {
|
||||
var sign = number < 0 ? '-' : '';
|
||||
var output = Math.abs(number).toString();
|
||||
while (output.length < targetLength) {
|
||||
output = '0' + output;
|
||||
}
|
||||
return sign + output;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = assign;
|
||||
function assign(target, object) {
|
||||
if (target == null) {
|
||||
throw new TypeError('assign requires that input parameter not be null or undefined');
|
||||
}
|
||||
for (var property in object) {
|
||||
if (Object.prototype.hasOwnProperty.call(object, property)) {
|
||||
;
|
||||
target[property] = object[property];
|
||||
}
|
||||
}
|
||||
return target;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = cloneObject;
|
||||
var _index = _interopRequireDefault(require("../assign/index.js"));
|
||||
function cloneObject(object) {
|
||||
return (0, _index.default)({}, object);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var _index = _interopRequireDefault(require("../../locale/en-US/index.js"));
|
||||
var _default = _index.default;
|
||||
exports.default = _default;
|
||||
module.exports = exports.default;
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.getDefaultOptions = getDefaultOptions;
|
||||
exports.setDefaultOptions = setDefaultOptions;
|
||||
var defaultOptions = {};
|
||||
function getDefaultOptions() {
|
||||
return defaultOptions;
|
||||
}
|
||||
function setDefaultOptions(newOptions) {
|
||||
defaultOptions = newOptions;
|
||||
}
|
||||
+781
@@ -0,0 +1,781 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var _index = _interopRequireDefault(require("../../../_lib/getUTCDayOfYear/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../../../_lib/getUTCISOWeek/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../../../_lib/getUTCISOWeekYear/index.js"));
|
||||
var _index4 = _interopRequireDefault(require("../../../_lib/getUTCWeek/index.js"));
|
||||
var _index5 = _interopRequireDefault(require("../../../_lib/getUTCWeekYear/index.js"));
|
||||
var _index6 = _interopRequireDefault(require("../../addLeadingZeros/index.js"));
|
||||
var _index7 = _interopRequireDefault(require("../lightFormatters/index.js"));
|
||||
var dayPeriodEnum = {
|
||||
am: 'am',
|
||||
pm: 'pm',
|
||||
midnight: 'midnight',
|
||||
noon: 'noon',
|
||||
morning: 'morning',
|
||||
afternoon: 'afternoon',
|
||||
evening: 'evening',
|
||||
night: 'night'
|
||||
};
|
||||
/*
|
||||
* | | Unit | | Unit |
|
||||
* |-----|--------------------------------|-----|--------------------------------|
|
||||
* | a | AM, PM | A* | Milliseconds in day |
|
||||
* | b | AM, PM, noon, midnight | B | Flexible day period |
|
||||
* | c | Stand-alone local day of week | C* | Localized hour w/ day period |
|
||||
* | d | Day of month | D | Day of year |
|
||||
* | e | Local day of week | E | Day of week |
|
||||
* | f | | F* | Day of week in month |
|
||||
* | g* | Modified Julian day | G | Era |
|
||||
* | h | Hour [1-12] | H | Hour [0-23] |
|
||||
* | i! | ISO day of week | I! | ISO week of year |
|
||||
* | j* | Localized hour w/ day period | J* | Localized hour w/o day period |
|
||||
* | k | Hour [1-24] | K | Hour [0-11] |
|
||||
* | l* | (deprecated) | L | Stand-alone month |
|
||||
* | m | Minute | M | Month |
|
||||
* | n | | N | |
|
||||
* | o! | Ordinal number modifier | O | Timezone (GMT) |
|
||||
* | p! | Long localized time | P! | Long localized date |
|
||||
* | q | Stand-alone quarter | Q | Quarter |
|
||||
* | r* | Related Gregorian year | R! | ISO week-numbering year |
|
||||
* | s | Second | S | Fraction of second |
|
||||
* | t! | Seconds timestamp | T! | Milliseconds timestamp |
|
||||
* | u | Extended year | U* | Cyclic year |
|
||||
* | v* | Timezone (generic non-locat.) | V* | Timezone (location) |
|
||||
* | w | Local week of year | W* | Week of month |
|
||||
* | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |
|
||||
* | y | Year (abs) | Y | Local week-numbering year |
|
||||
* | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |
|
||||
*
|
||||
* Letters marked by * are not implemented but reserved by Unicode standard.
|
||||
*
|
||||
* Letters marked by ! are non-standard, but implemented by date-fns:
|
||||
* - `o` modifies the previous token to turn it into an ordinal (see `format` docs)
|
||||
* - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,
|
||||
* i.e. 7 for Sunday, 1 for Monday, etc.
|
||||
* - `I` is ISO week of year, as opposed to `w` which is local week of year.
|
||||
* - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.
|
||||
* `R` is supposed to be used in conjunction with `I` and `i`
|
||||
* for universal ISO week-numbering date, whereas
|
||||
* `Y` is supposed to be used in conjunction with `w` and `e`
|
||||
* for week-numbering date specific to the locale.
|
||||
* - `P` is long localized date format
|
||||
* - `p` is long localized time format
|
||||
*/
|
||||
|
||||
var formatters = {
|
||||
// Era
|
||||
G: function G(date, token, localize) {
|
||||
var era = date.getUTCFullYear() > 0 ? 1 : 0;
|
||||
switch (token) {
|
||||
// AD, BC
|
||||
case 'G':
|
||||
case 'GG':
|
||||
case 'GGG':
|
||||
return localize.era(era, {
|
||||
width: 'abbreviated'
|
||||
});
|
||||
// A, B
|
||||
case 'GGGGG':
|
||||
return localize.era(era, {
|
||||
width: 'narrow'
|
||||
});
|
||||
// Anno Domini, Before Christ
|
||||
case 'GGGG':
|
||||
default:
|
||||
return localize.era(era, {
|
||||
width: 'wide'
|
||||
});
|
||||
}
|
||||
},
|
||||
// Year
|
||||
y: function y(date, token, localize) {
|
||||
// Ordinal number
|
||||
if (token === 'yo') {
|
||||
var signedYear = date.getUTCFullYear();
|
||||
// Returns 1 for 1 BC (which is year 0 in JavaScript)
|
||||
var year = signedYear > 0 ? signedYear : 1 - signedYear;
|
||||
return localize.ordinalNumber(year, {
|
||||
unit: 'year'
|
||||
});
|
||||
}
|
||||
return _index7.default.y(date, token);
|
||||
},
|
||||
// Local week-numbering year
|
||||
Y: function Y(date, token, localize, options) {
|
||||
var signedWeekYear = (0, _index5.default)(date, options);
|
||||
// Returns 1 for 1 BC (which is year 0 in JavaScript)
|
||||
var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;
|
||||
|
||||
// Two digit year
|
||||
if (token === 'YY') {
|
||||
var twoDigitYear = weekYear % 100;
|
||||
return (0, _index6.default)(twoDigitYear, 2);
|
||||
}
|
||||
|
||||
// Ordinal number
|
||||
if (token === 'Yo') {
|
||||
return localize.ordinalNumber(weekYear, {
|
||||
unit: 'year'
|
||||
});
|
||||
}
|
||||
|
||||
// Padding
|
||||
return (0, _index6.default)(weekYear, token.length);
|
||||
},
|
||||
// ISO week-numbering year
|
||||
R: function R(date, token) {
|
||||
var isoWeekYear = (0, _index3.default)(date);
|
||||
|
||||
// Padding
|
||||
return (0, _index6.default)(isoWeekYear, token.length);
|
||||
},
|
||||
// Extended year. This is a single number designating the year of this calendar system.
|
||||
// The main difference between `y` and `u` localizers are B.C. years:
|
||||
// | Year | `y` | `u` |
|
||||
// |------|-----|-----|
|
||||
// | AC 1 | 1 | 1 |
|
||||
// | BC 1 | 1 | 0 |
|
||||
// | BC 2 | 2 | -1 |
|
||||
// Also `yy` always returns the last two digits of a year,
|
||||
// while `uu` pads single digit years to 2 characters and returns other years unchanged.
|
||||
u: function u(date, token) {
|
||||
var year = date.getUTCFullYear();
|
||||
return (0, _index6.default)(year, token.length);
|
||||
},
|
||||
// Quarter
|
||||
Q: function Q(date, token, localize) {
|
||||
var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);
|
||||
switch (token) {
|
||||
// 1, 2, 3, 4
|
||||
case 'Q':
|
||||
return String(quarter);
|
||||
// 01, 02, 03, 04
|
||||
case 'QQ':
|
||||
return (0, _index6.default)(quarter, 2);
|
||||
// 1st, 2nd, 3rd, 4th
|
||||
case 'Qo':
|
||||
return localize.ordinalNumber(quarter, {
|
||||
unit: 'quarter'
|
||||
});
|
||||
// Q1, Q2, Q3, Q4
|
||||
case 'QQQ':
|
||||
return localize.quarter(quarter, {
|
||||
width: 'abbreviated',
|
||||
context: 'formatting'
|
||||
});
|
||||
// 1, 2, 3, 4 (narrow quarter; could be not numerical)
|
||||
case 'QQQQQ':
|
||||
return localize.quarter(quarter, {
|
||||
width: 'narrow',
|
||||
context: 'formatting'
|
||||
});
|
||||
// 1st quarter, 2nd quarter, ...
|
||||
case 'QQQQ':
|
||||
default:
|
||||
return localize.quarter(quarter, {
|
||||
width: 'wide',
|
||||
context: 'formatting'
|
||||
});
|
||||
}
|
||||
},
|
||||
// Stand-alone quarter
|
||||
q: function q(date, token, localize) {
|
||||
var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);
|
||||
switch (token) {
|
||||
// 1, 2, 3, 4
|
||||
case 'q':
|
||||
return String(quarter);
|
||||
// 01, 02, 03, 04
|
||||
case 'qq':
|
||||
return (0, _index6.default)(quarter, 2);
|
||||
// 1st, 2nd, 3rd, 4th
|
||||
case 'qo':
|
||||
return localize.ordinalNumber(quarter, {
|
||||
unit: 'quarter'
|
||||
});
|
||||
// Q1, Q2, Q3, Q4
|
||||
case 'qqq':
|
||||
return localize.quarter(quarter, {
|
||||
width: 'abbreviated',
|
||||
context: 'standalone'
|
||||
});
|
||||
// 1, 2, 3, 4 (narrow quarter; could be not numerical)
|
||||
case 'qqqqq':
|
||||
return localize.quarter(quarter, {
|
||||
width: 'narrow',
|
||||
context: 'standalone'
|
||||
});
|
||||
// 1st quarter, 2nd quarter, ...
|
||||
case 'qqqq':
|
||||
default:
|
||||
return localize.quarter(quarter, {
|
||||
width: 'wide',
|
||||
context: 'standalone'
|
||||
});
|
||||
}
|
||||
},
|
||||
// Month
|
||||
M: function M(date, token, localize) {
|
||||
var month = date.getUTCMonth();
|
||||
switch (token) {
|
||||
case 'M':
|
||||
case 'MM':
|
||||
return _index7.default.M(date, token);
|
||||
// 1st, 2nd, ..., 12th
|
||||
case 'Mo':
|
||||
return localize.ordinalNumber(month + 1, {
|
||||
unit: 'month'
|
||||
});
|
||||
// Jan, Feb, ..., Dec
|
||||
case 'MMM':
|
||||
return localize.month(month, {
|
||||
width: 'abbreviated',
|
||||
context: 'formatting'
|
||||
});
|
||||
// J, F, ..., D
|
||||
case 'MMMMM':
|
||||
return localize.month(month, {
|
||||
width: 'narrow',
|
||||
context: 'formatting'
|
||||
});
|
||||
// January, February, ..., December
|
||||
case 'MMMM':
|
||||
default:
|
||||
return localize.month(month, {
|
||||
width: 'wide',
|
||||
context: 'formatting'
|
||||
});
|
||||
}
|
||||
},
|
||||
// Stand-alone month
|
||||
L: function L(date, token, localize) {
|
||||
var month = date.getUTCMonth();
|
||||
switch (token) {
|
||||
// 1, 2, ..., 12
|
||||
case 'L':
|
||||
return String(month + 1);
|
||||
// 01, 02, ..., 12
|
||||
case 'LL':
|
||||
return (0, _index6.default)(month + 1, 2);
|
||||
// 1st, 2nd, ..., 12th
|
||||
case 'Lo':
|
||||
return localize.ordinalNumber(month + 1, {
|
||||
unit: 'month'
|
||||
});
|
||||
// Jan, Feb, ..., Dec
|
||||
case 'LLL':
|
||||
return localize.month(month, {
|
||||
width: 'abbreviated',
|
||||
context: 'standalone'
|
||||
});
|
||||
// J, F, ..., D
|
||||
case 'LLLLL':
|
||||
return localize.month(month, {
|
||||
width: 'narrow',
|
||||
context: 'standalone'
|
||||
});
|
||||
// January, February, ..., December
|
||||
case 'LLLL':
|
||||
default:
|
||||
return localize.month(month, {
|
||||
width: 'wide',
|
||||
context: 'standalone'
|
||||
});
|
||||
}
|
||||
},
|
||||
// Local week of year
|
||||
w: function w(date, token, localize, options) {
|
||||
var week = (0, _index4.default)(date, options);
|
||||
if (token === 'wo') {
|
||||
return localize.ordinalNumber(week, {
|
||||
unit: 'week'
|
||||
});
|
||||
}
|
||||
return (0, _index6.default)(week, token.length);
|
||||
},
|
||||
// ISO week of year
|
||||
I: function I(date, token, localize) {
|
||||
var isoWeek = (0, _index2.default)(date);
|
||||
if (token === 'Io') {
|
||||
return localize.ordinalNumber(isoWeek, {
|
||||
unit: 'week'
|
||||
});
|
||||
}
|
||||
return (0, _index6.default)(isoWeek, token.length);
|
||||
},
|
||||
// Day of the month
|
||||
d: function d(date, token, localize) {
|
||||
if (token === 'do') {
|
||||
return localize.ordinalNumber(date.getUTCDate(), {
|
||||
unit: 'date'
|
||||
});
|
||||
}
|
||||
return _index7.default.d(date, token);
|
||||
},
|
||||
// Day of year
|
||||
D: function D(date, token, localize) {
|
||||
var dayOfYear = (0, _index.default)(date);
|
||||
if (token === 'Do') {
|
||||
return localize.ordinalNumber(dayOfYear, {
|
||||
unit: 'dayOfYear'
|
||||
});
|
||||
}
|
||||
return (0, _index6.default)(dayOfYear, token.length);
|
||||
},
|
||||
// Day of week
|
||||
E: function E(date, token, localize) {
|
||||
var dayOfWeek = date.getUTCDay();
|
||||
switch (token) {
|
||||
// Tue
|
||||
case 'E':
|
||||
case 'EE':
|
||||
case 'EEE':
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'abbreviated',
|
||||
context: 'formatting'
|
||||
});
|
||||
// T
|
||||
case 'EEEEE':
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'narrow',
|
||||
context: 'formatting'
|
||||
});
|
||||
// Tu
|
||||
case 'EEEEEE':
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'short',
|
||||
context: 'formatting'
|
||||
});
|
||||
// Tuesday
|
||||
case 'EEEE':
|
||||
default:
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'wide',
|
||||
context: 'formatting'
|
||||
});
|
||||
}
|
||||
},
|
||||
// Local day of week
|
||||
e: function e(date, token, localize, options) {
|
||||
var dayOfWeek = date.getUTCDay();
|
||||
var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;
|
||||
switch (token) {
|
||||
// Numerical value (Nth day of week with current locale or weekStartsOn)
|
||||
case 'e':
|
||||
return String(localDayOfWeek);
|
||||
// Padded numerical value
|
||||
case 'ee':
|
||||
return (0, _index6.default)(localDayOfWeek, 2);
|
||||
// 1st, 2nd, ..., 7th
|
||||
case 'eo':
|
||||
return localize.ordinalNumber(localDayOfWeek, {
|
||||
unit: 'day'
|
||||
});
|
||||
case 'eee':
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'abbreviated',
|
||||
context: 'formatting'
|
||||
});
|
||||
// T
|
||||
case 'eeeee':
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'narrow',
|
||||
context: 'formatting'
|
||||
});
|
||||
// Tu
|
||||
case 'eeeeee':
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'short',
|
||||
context: 'formatting'
|
||||
});
|
||||
// Tuesday
|
||||
case 'eeee':
|
||||
default:
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'wide',
|
||||
context: 'formatting'
|
||||
});
|
||||
}
|
||||
},
|
||||
// Stand-alone local day of week
|
||||
c: function c(date, token, localize, options) {
|
||||
var dayOfWeek = date.getUTCDay();
|
||||
var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;
|
||||
switch (token) {
|
||||
// Numerical value (same as in `e`)
|
||||
case 'c':
|
||||
return String(localDayOfWeek);
|
||||
// Padded numerical value
|
||||
case 'cc':
|
||||
return (0, _index6.default)(localDayOfWeek, token.length);
|
||||
// 1st, 2nd, ..., 7th
|
||||
case 'co':
|
||||
return localize.ordinalNumber(localDayOfWeek, {
|
||||
unit: 'day'
|
||||
});
|
||||
case 'ccc':
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'abbreviated',
|
||||
context: 'standalone'
|
||||
});
|
||||
// T
|
||||
case 'ccccc':
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'narrow',
|
||||
context: 'standalone'
|
||||
});
|
||||
// Tu
|
||||
case 'cccccc':
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'short',
|
||||
context: 'standalone'
|
||||
});
|
||||
// Tuesday
|
||||
case 'cccc':
|
||||
default:
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'wide',
|
||||
context: 'standalone'
|
||||
});
|
||||
}
|
||||
},
|
||||
// ISO day of week
|
||||
i: function i(date, token, localize) {
|
||||
var dayOfWeek = date.getUTCDay();
|
||||
var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;
|
||||
switch (token) {
|
||||
// 2
|
||||
case 'i':
|
||||
return String(isoDayOfWeek);
|
||||
// 02
|
||||
case 'ii':
|
||||
return (0, _index6.default)(isoDayOfWeek, token.length);
|
||||
// 2nd
|
||||
case 'io':
|
||||
return localize.ordinalNumber(isoDayOfWeek, {
|
||||
unit: 'day'
|
||||
});
|
||||
// Tue
|
||||
case 'iii':
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'abbreviated',
|
||||
context: 'formatting'
|
||||
});
|
||||
// T
|
||||
case 'iiiii':
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'narrow',
|
||||
context: 'formatting'
|
||||
});
|
||||
// Tu
|
||||
case 'iiiiii':
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'short',
|
||||
context: 'formatting'
|
||||
});
|
||||
// Tuesday
|
||||
case 'iiii':
|
||||
default:
|
||||
return localize.day(dayOfWeek, {
|
||||
width: 'wide',
|
||||
context: 'formatting'
|
||||
});
|
||||
}
|
||||
},
|
||||
// AM or PM
|
||||
a: function a(date, token, localize) {
|
||||
var hours = date.getUTCHours();
|
||||
var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';
|
||||
switch (token) {
|
||||
case 'a':
|
||||
case 'aa':
|
||||
return localize.dayPeriod(dayPeriodEnumValue, {
|
||||
width: 'abbreviated',
|
||||
context: 'formatting'
|
||||
});
|
||||
case 'aaa':
|
||||
return localize.dayPeriod(dayPeriodEnumValue, {
|
||||
width: 'abbreviated',
|
||||
context: 'formatting'
|
||||
}).toLowerCase();
|
||||
case 'aaaaa':
|
||||
return localize.dayPeriod(dayPeriodEnumValue, {
|
||||
width: 'narrow',
|
||||
context: 'formatting'
|
||||
});
|
||||
case 'aaaa':
|
||||
default:
|
||||
return localize.dayPeriod(dayPeriodEnumValue, {
|
||||
width: 'wide',
|
||||
context: 'formatting'
|
||||
});
|
||||
}
|
||||
},
|
||||
// AM, PM, midnight, noon
|
||||
b: function b(date, token, localize) {
|
||||
var hours = date.getUTCHours();
|
||||
var dayPeriodEnumValue;
|
||||
if (hours === 12) {
|
||||
dayPeriodEnumValue = dayPeriodEnum.noon;
|
||||
} else if (hours === 0) {
|
||||
dayPeriodEnumValue = dayPeriodEnum.midnight;
|
||||
} else {
|
||||
dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';
|
||||
}
|
||||
switch (token) {
|
||||
case 'b':
|
||||
case 'bb':
|
||||
return localize.dayPeriod(dayPeriodEnumValue, {
|
||||
width: 'abbreviated',
|
||||
context: 'formatting'
|
||||
});
|
||||
case 'bbb':
|
||||
return localize.dayPeriod(dayPeriodEnumValue, {
|
||||
width: 'abbreviated',
|
||||
context: 'formatting'
|
||||
}).toLowerCase();
|
||||
case 'bbbbb':
|
||||
return localize.dayPeriod(dayPeriodEnumValue, {
|
||||
width: 'narrow',
|
||||
context: 'formatting'
|
||||
});
|
||||
case 'bbbb':
|
||||
default:
|
||||
return localize.dayPeriod(dayPeriodEnumValue, {
|
||||
width: 'wide',
|
||||
context: 'formatting'
|
||||
});
|
||||
}
|
||||
},
|
||||
// in the morning, in the afternoon, in the evening, at night
|
||||
B: function B(date, token, localize) {
|
||||
var hours = date.getUTCHours();
|
||||
var dayPeriodEnumValue;
|
||||
if (hours >= 17) {
|
||||
dayPeriodEnumValue = dayPeriodEnum.evening;
|
||||
} else if (hours >= 12) {
|
||||
dayPeriodEnumValue = dayPeriodEnum.afternoon;
|
||||
} else if (hours >= 4) {
|
||||
dayPeriodEnumValue = dayPeriodEnum.morning;
|
||||
} else {
|
||||
dayPeriodEnumValue = dayPeriodEnum.night;
|
||||
}
|
||||
switch (token) {
|
||||
case 'B':
|
||||
case 'BB':
|
||||
case 'BBB':
|
||||
return localize.dayPeriod(dayPeriodEnumValue, {
|
||||
width: 'abbreviated',
|
||||
context: 'formatting'
|
||||
});
|
||||
case 'BBBBB':
|
||||
return localize.dayPeriod(dayPeriodEnumValue, {
|
||||
width: 'narrow',
|
||||
context: 'formatting'
|
||||
});
|
||||
case 'BBBB':
|
||||
default:
|
||||
return localize.dayPeriod(dayPeriodEnumValue, {
|
||||
width: 'wide',
|
||||
context: 'formatting'
|
||||
});
|
||||
}
|
||||
},
|
||||
// Hour [1-12]
|
||||
h: function h(date, token, localize) {
|
||||
if (token === 'ho') {
|
||||
var hours = date.getUTCHours() % 12;
|
||||
if (hours === 0) hours = 12;
|
||||
return localize.ordinalNumber(hours, {
|
||||
unit: 'hour'
|
||||
});
|
||||
}
|
||||
return _index7.default.h(date, token);
|
||||
},
|
||||
// Hour [0-23]
|
||||
H: function H(date, token, localize) {
|
||||
if (token === 'Ho') {
|
||||
return localize.ordinalNumber(date.getUTCHours(), {
|
||||
unit: 'hour'
|
||||
});
|
||||
}
|
||||
return _index7.default.H(date, token);
|
||||
},
|
||||
// Hour [0-11]
|
||||
K: function K(date, token, localize) {
|
||||
var hours = date.getUTCHours() % 12;
|
||||
if (token === 'Ko') {
|
||||
return localize.ordinalNumber(hours, {
|
||||
unit: 'hour'
|
||||
});
|
||||
}
|
||||
return (0, _index6.default)(hours, token.length);
|
||||
},
|
||||
// Hour [1-24]
|
||||
k: function k(date, token, localize) {
|
||||
var hours = date.getUTCHours();
|
||||
if (hours === 0) hours = 24;
|
||||
if (token === 'ko') {
|
||||
return localize.ordinalNumber(hours, {
|
||||
unit: 'hour'
|
||||
});
|
||||
}
|
||||
return (0, _index6.default)(hours, token.length);
|
||||
},
|
||||
// Minute
|
||||
m: function m(date, token, localize) {
|
||||
if (token === 'mo') {
|
||||
return localize.ordinalNumber(date.getUTCMinutes(), {
|
||||
unit: 'minute'
|
||||
});
|
||||
}
|
||||
return _index7.default.m(date, token);
|
||||
},
|
||||
// Second
|
||||
s: function s(date, token, localize) {
|
||||
if (token === 'so') {
|
||||
return localize.ordinalNumber(date.getUTCSeconds(), {
|
||||
unit: 'second'
|
||||
});
|
||||
}
|
||||
return _index7.default.s(date, token);
|
||||
},
|
||||
// Fraction of second
|
||||
S: function S(date, token) {
|
||||
return _index7.default.S(date, token);
|
||||
},
|
||||
// Timezone (ISO-8601. If offset is 0, output is always `'Z'`)
|
||||
X: function X(date, token, _localize, options) {
|
||||
var originalDate = options._originalDate || date;
|
||||
var timezoneOffset = originalDate.getTimezoneOffset();
|
||||
if (timezoneOffset === 0) {
|
||||
return 'Z';
|
||||
}
|
||||
switch (token) {
|
||||
// Hours and optional minutes
|
||||
case 'X':
|
||||
return formatTimezoneWithOptionalMinutes(timezoneOffset);
|
||||
|
||||
// Hours, minutes and optional seconds without `:` delimiter
|
||||
// Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
|
||||
// so this token always has the same output as `XX`
|
||||
case 'XXXX':
|
||||
case 'XX':
|
||||
// Hours and minutes without `:` delimiter
|
||||
return formatTimezone(timezoneOffset);
|
||||
|
||||
// Hours, minutes and optional seconds with `:` delimiter
|
||||
// Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
|
||||
// so this token always has the same output as `XXX`
|
||||
case 'XXXXX':
|
||||
case 'XXX': // Hours and minutes with `:` delimiter
|
||||
default:
|
||||
return formatTimezone(timezoneOffset, ':');
|
||||
}
|
||||
},
|
||||
// Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)
|
||||
x: function x(date, token, _localize, options) {
|
||||
var originalDate = options._originalDate || date;
|
||||
var timezoneOffset = originalDate.getTimezoneOffset();
|
||||
switch (token) {
|
||||
// Hours and optional minutes
|
||||
case 'x':
|
||||
return formatTimezoneWithOptionalMinutes(timezoneOffset);
|
||||
|
||||
// Hours, minutes and optional seconds without `:` delimiter
|
||||
// Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
|
||||
// so this token always has the same output as `xx`
|
||||
case 'xxxx':
|
||||
case 'xx':
|
||||
// Hours and minutes without `:` delimiter
|
||||
return formatTimezone(timezoneOffset);
|
||||
|
||||
// Hours, minutes and optional seconds with `:` delimiter
|
||||
// Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
|
||||
// so this token always has the same output as `xxx`
|
||||
case 'xxxxx':
|
||||
case 'xxx': // Hours and minutes with `:` delimiter
|
||||
default:
|
||||
return formatTimezone(timezoneOffset, ':');
|
||||
}
|
||||
},
|
||||
// Timezone (GMT)
|
||||
O: function O(date, token, _localize, options) {
|
||||
var originalDate = options._originalDate || date;
|
||||
var timezoneOffset = originalDate.getTimezoneOffset();
|
||||
switch (token) {
|
||||
// Short
|
||||
case 'O':
|
||||
case 'OO':
|
||||
case 'OOO':
|
||||
return 'GMT' + formatTimezoneShort(timezoneOffset, ':');
|
||||
// Long
|
||||
case 'OOOO':
|
||||
default:
|
||||
return 'GMT' + formatTimezone(timezoneOffset, ':');
|
||||
}
|
||||
},
|
||||
// Timezone (specific non-location)
|
||||
z: function z(date, token, _localize, options) {
|
||||
var originalDate = options._originalDate || date;
|
||||
var timezoneOffset = originalDate.getTimezoneOffset();
|
||||
switch (token) {
|
||||
// Short
|
||||
case 'z':
|
||||
case 'zz':
|
||||
case 'zzz':
|
||||
return 'GMT' + formatTimezoneShort(timezoneOffset, ':');
|
||||
// Long
|
||||
case 'zzzz':
|
||||
default:
|
||||
return 'GMT' + formatTimezone(timezoneOffset, ':');
|
||||
}
|
||||
},
|
||||
// Seconds timestamp
|
||||
t: function t(date, token, _localize, options) {
|
||||
var originalDate = options._originalDate || date;
|
||||
var timestamp = Math.floor(originalDate.getTime() / 1000);
|
||||
return (0, _index6.default)(timestamp, token.length);
|
||||
},
|
||||
// Milliseconds timestamp
|
||||
T: function T(date, token, _localize, options) {
|
||||
var originalDate = options._originalDate || date;
|
||||
var timestamp = originalDate.getTime();
|
||||
return (0, _index6.default)(timestamp, token.length);
|
||||
}
|
||||
};
|
||||
function formatTimezoneShort(offset, dirtyDelimiter) {
|
||||
var sign = offset > 0 ? '-' : '+';
|
||||
var absOffset = Math.abs(offset);
|
||||
var hours = Math.floor(absOffset / 60);
|
||||
var minutes = absOffset % 60;
|
||||
if (minutes === 0) {
|
||||
return sign + String(hours);
|
||||
}
|
||||
var delimiter = dirtyDelimiter || '';
|
||||
return sign + String(hours) + delimiter + (0, _index6.default)(minutes, 2);
|
||||
}
|
||||
function formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {
|
||||
if (offset % 60 === 0) {
|
||||
var sign = offset > 0 ? '-' : '+';
|
||||
return sign + (0, _index6.default)(Math.abs(offset) / 60, 2);
|
||||
}
|
||||
return formatTimezone(offset, dirtyDelimiter);
|
||||
}
|
||||
function formatTimezone(offset, dirtyDelimiter) {
|
||||
var delimiter = dirtyDelimiter || '';
|
||||
var sign = offset > 0 ? '-' : '+';
|
||||
var absOffset = Math.abs(offset);
|
||||
var hours = (0, _index6.default)(Math.floor(absOffset / 60), 2);
|
||||
var minutes = (0, _index6.default)(absOffset % 60, 2);
|
||||
return sign + hours + delimiter + minutes;
|
||||
}
|
||||
var _default = formatters;
|
||||
exports.default = _default;
|
||||
module.exports = exports.default;
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var _index = _interopRequireDefault(require("../../addLeadingZeros/index.js"));
|
||||
/*
|
||||
* | | Unit | | Unit |
|
||||
* |-----|--------------------------------|-----|--------------------------------|
|
||||
* | a | AM, PM | A* | |
|
||||
* | d | Day of month | D | |
|
||||
* | h | Hour [1-12] | H | Hour [0-23] |
|
||||
* | m | Minute | M | Month |
|
||||
* | s | Second | S | Fraction of second |
|
||||
* | y | Year (abs) | Y | |
|
||||
*
|
||||
* Letters marked by * are not implemented but reserved by Unicode standard.
|
||||
*/
|
||||
|
||||
var formatters = {
|
||||
// Year
|
||||
y: function y(date, token) {
|
||||
// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens
|
||||
// | Year | y | yy | yyy | yyyy | yyyyy |
|
||||
// |----------|-------|----|-------|-------|-------|
|
||||
// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |
|
||||
// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |
|
||||
// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |
|
||||
// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |
|
||||
// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |
|
||||
|
||||
var signedYear = date.getUTCFullYear();
|
||||
// Returns 1 for 1 BC (which is year 0 in JavaScript)
|
||||
var year = signedYear > 0 ? signedYear : 1 - signedYear;
|
||||
return (0, _index.default)(token === 'yy' ? year % 100 : year, token.length);
|
||||
},
|
||||
// Month
|
||||
M: function M(date, token) {
|
||||
var month = date.getUTCMonth();
|
||||
return token === 'M' ? String(month + 1) : (0, _index.default)(month + 1, 2);
|
||||
},
|
||||
// Day of the month
|
||||
d: function d(date, token) {
|
||||
return (0, _index.default)(date.getUTCDate(), token.length);
|
||||
},
|
||||
// AM or PM
|
||||
a: function a(date, token) {
|
||||
var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';
|
||||
switch (token) {
|
||||
case 'a':
|
||||
case 'aa':
|
||||
return dayPeriodEnumValue.toUpperCase();
|
||||
case 'aaa':
|
||||
return dayPeriodEnumValue;
|
||||
case 'aaaaa':
|
||||
return dayPeriodEnumValue[0];
|
||||
case 'aaaa':
|
||||
default:
|
||||
return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';
|
||||
}
|
||||
},
|
||||
// Hour [1-12]
|
||||
h: function h(date, token) {
|
||||
return (0, _index.default)(date.getUTCHours() % 12 || 12, token.length);
|
||||
},
|
||||
// Hour [0-23]
|
||||
H: function H(date, token) {
|
||||
return (0, _index.default)(date.getUTCHours(), token.length);
|
||||
},
|
||||
// Minute
|
||||
m: function m(date, token) {
|
||||
return (0, _index.default)(date.getUTCMinutes(), token.length);
|
||||
},
|
||||
// Second
|
||||
s: function s(date, token) {
|
||||
return (0, _index.default)(date.getUTCSeconds(), token.length);
|
||||
},
|
||||
// Fraction of second
|
||||
S: function S(date, token) {
|
||||
var numberOfDigits = token.length;
|
||||
var milliseconds = date.getUTCMilliseconds();
|
||||
var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));
|
||||
return (0, _index.default)(fractionalSeconds, token.length);
|
||||
}
|
||||
};
|
||||
var _default = formatters;
|
||||
exports.default = _default;
|
||||
module.exports = exports.default;
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {
|
||||
switch (pattern) {
|
||||
case 'P':
|
||||
return formatLong.date({
|
||||
width: 'short'
|
||||
});
|
||||
case 'PP':
|
||||
return formatLong.date({
|
||||
width: 'medium'
|
||||
});
|
||||
case 'PPP':
|
||||
return formatLong.date({
|
||||
width: 'long'
|
||||
});
|
||||
case 'PPPP':
|
||||
default:
|
||||
return formatLong.date({
|
||||
width: 'full'
|
||||
});
|
||||
}
|
||||
};
|
||||
var timeLongFormatter = function timeLongFormatter(pattern, formatLong) {
|
||||
switch (pattern) {
|
||||
case 'p':
|
||||
return formatLong.time({
|
||||
width: 'short'
|
||||
});
|
||||
case 'pp':
|
||||
return formatLong.time({
|
||||
width: 'medium'
|
||||
});
|
||||
case 'ppp':
|
||||
return formatLong.time({
|
||||
width: 'long'
|
||||
});
|
||||
case 'pppp':
|
||||
default:
|
||||
return formatLong.time({
|
||||
width: 'full'
|
||||
});
|
||||
}
|
||||
};
|
||||
var dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {
|
||||
var matchResult = pattern.match(/(P+)(p+)?/) || [];
|
||||
var datePattern = matchResult[1];
|
||||
var timePattern = matchResult[2];
|
||||
if (!timePattern) {
|
||||
return dateLongFormatter(pattern, formatLong);
|
||||
}
|
||||
var dateTimeFormat;
|
||||
switch (datePattern) {
|
||||
case 'P':
|
||||
dateTimeFormat = formatLong.dateTime({
|
||||
width: 'short'
|
||||
});
|
||||
break;
|
||||
case 'PP':
|
||||
dateTimeFormat = formatLong.dateTime({
|
||||
width: 'medium'
|
||||
});
|
||||
break;
|
||||
case 'PPP':
|
||||
dateTimeFormat = formatLong.dateTime({
|
||||
width: 'long'
|
||||
});
|
||||
break;
|
||||
case 'PPPP':
|
||||
default:
|
||||
dateTimeFormat = formatLong.dateTime({
|
||||
width: 'full'
|
||||
});
|
||||
break;
|
||||
}
|
||||
return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));
|
||||
};
|
||||
var longFormatters = {
|
||||
p: timeLongFormatter,
|
||||
P: dateTimeLongFormatter
|
||||
};
|
||||
var _default = longFormatters;
|
||||
exports.default = _default;
|
||||
module.exports = exports.default;
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = getTimezoneOffsetInMilliseconds;
|
||||
/**
|
||||
* Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.
|
||||
* They usually appear for dates that denote time before the timezones were introduced
|
||||
* (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891
|
||||
* and GMT+01:00:00 after that date)
|
||||
*
|
||||
* Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,
|
||||
* which would lead to incorrect calculations.
|
||||
*
|
||||
* This function returns the timezone offset in milliseconds that takes seconds in account.
|
||||
*/
|
||||
function getTimezoneOffsetInMilliseconds(date) {
|
||||
var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));
|
||||
utcDate.setUTCFullYear(date.getFullYear());
|
||||
return date.getTime() - utcDate.getTime();
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = getUTCDayOfYear;
|
||||
var _index = _interopRequireDefault(require("../../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../requiredArgs/index.js"));
|
||||
var MILLISECONDS_IN_DAY = 86400000;
|
||||
function getUTCDayOfYear(dirtyDate) {
|
||||
(0, _index2.default)(1, arguments);
|
||||
var date = (0, _index.default)(dirtyDate);
|
||||
var timestamp = date.getTime();
|
||||
date.setUTCMonth(0, 1);
|
||||
date.setUTCHours(0, 0, 0, 0);
|
||||
var startOfYearTimestamp = date.getTime();
|
||||
var difference = timestamp - startOfYearTimestamp;
|
||||
return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = getUTCISOWeek;
|
||||
var _index = _interopRequireDefault(require("../../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../startOfUTCISOWeek/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../startOfUTCISOWeekYear/index.js"));
|
||||
var _index4 = _interopRequireDefault(require("../requiredArgs/index.js"));
|
||||
var MILLISECONDS_IN_WEEK = 604800000;
|
||||
function getUTCISOWeek(dirtyDate) {
|
||||
(0, _index4.default)(1, arguments);
|
||||
var date = (0, _index.default)(dirtyDate);
|
||||
var diff = (0, _index2.default)(date).getTime() - (0, _index3.default)(date).getTime();
|
||||
|
||||
// Round the number of days to the nearest integer
|
||||
// because the number of milliseconds in a week is not constant
|
||||
// (e.g. it's different in the week of the daylight saving time clock shift)
|
||||
return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = getUTCISOWeekYear;
|
||||
var _index = _interopRequireDefault(require("../../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../requiredArgs/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../startOfUTCISOWeek/index.js"));
|
||||
function getUTCISOWeekYear(dirtyDate) {
|
||||
(0, _index2.default)(1, arguments);
|
||||
var date = (0, _index.default)(dirtyDate);
|
||||
var year = date.getUTCFullYear();
|
||||
var fourthOfJanuaryOfNextYear = new Date(0);
|
||||
fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);
|
||||
fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);
|
||||
var startOfNextYear = (0, _index3.default)(fourthOfJanuaryOfNextYear);
|
||||
var fourthOfJanuaryOfThisYear = new Date(0);
|
||||
fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);
|
||||
fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);
|
||||
var startOfThisYear = (0, _index3.default)(fourthOfJanuaryOfThisYear);
|
||||
if (date.getTime() >= startOfNextYear.getTime()) {
|
||||
return year + 1;
|
||||
} else if (date.getTime() >= startOfThisYear.getTime()) {
|
||||
return year;
|
||||
} else {
|
||||
return year - 1;
|
||||
}
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = getUTCWeek;
|
||||
var _index = _interopRequireDefault(require("../../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../startOfUTCWeek/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../startOfUTCWeekYear/index.js"));
|
||||
var _index4 = _interopRequireDefault(require("../requiredArgs/index.js"));
|
||||
var MILLISECONDS_IN_WEEK = 604800000;
|
||||
function getUTCWeek(dirtyDate, options) {
|
||||
(0, _index4.default)(1, arguments);
|
||||
var date = (0, _index.default)(dirtyDate);
|
||||
var diff = (0, _index2.default)(date, options).getTime() - (0, _index3.default)(date, options).getTime();
|
||||
|
||||
// Round the number of days to the nearest integer
|
||||
// because the number of milliseconds in a week is not constant
|
||||
// (e.g. it's different in the week of the daylight saving time clock shift)
|
||||
return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = getUTCWeekYear;
|
||||
var _index = _interopRequireDefault(require("../../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../requiredArgs/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../startOfUTCWeek/index.js"));
|
||||
var _index4 = _interopRequireDefault(require("../toInteger/index.js"));
|
||||
var _index5 = require("../defaultOptions/index.js");
|
||||
function getUTCWeekYear(dirtyDate, options) {
|
||||
var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;
|
||||
(0, _index2.default)(1, arguments);
|
||||
var date = (0, _index.default)(dirtyDate);
|
||||
var year = date.getUTCFullYear();
|
||||
var defaultOptions = (0, _index5.getDefaultOptions)();
|
||||
var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);
|
||||
|
||||
// Test if weekStartsOn is between 1 and 7 _and_ is not NaN
|
||||
if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {
|
||||
throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');
|
||||
}
|
||||
var firstWeekOfNextYear = new Date(0);
|
||||
firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);
|
||||
firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);
|
||||
var startOfNextYear = (0, _index3.default)(firstWeekOfNextYear, options);
|
||||
var firstWeekOfThisYear = new Date(0);
|
||||
firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);
|
||||
firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);
|
||||
var startOfThisYear = (0, _index3.default)(firstWeekOfThisYear, options);
|
||||
if (date.getTime() >= startOfNextYear.getTime()) {
|
||||
return year + 1;
|
||||
} else if (date.getTime() >= startOfThisYear.getTime()) {
|
||||
return year;
|
||||
} else {
|
||||
return year - 1;
|
||||
}
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = isSameUTCWeek;
|
||||
var _index = _interopRequireDefault(require("../requiredArgs/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../startOfUTCWeek/index.js"));
|
||||
function isSameUTCWeek(dirtyDateLeft, dirtyDateRight, options) {
|
||||
(0, _index.default)(2, arguments);
|
||||
var dateLeftStartOfWeek = (0, _index2.default)(dirtyDateLeft, options);
|
||||
var dateRightStartOfWeek = (0, _index2.default)(dirtyDateRight, options);
|
||||
return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime();
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.isProtectedDayOfYearToken = isProtectedDayOfYearToken;
|
||||
exports.isProtectedWeekYearToken = isProtectedWeekYearToken;
|
||||
exports.throwProtectedError = throwProtectedError;
|
||||
var protectedDayOfYearTokens = ['D', 'DD'];
|
||||
var protectedWeekYearTokens = ['YY', 'YYYY'];
|
||||
function isProtectedDayOfYearToken(token) {
|
||||
return protectedDayOfYearTokens.indexOf(token) !== -1;
|
||||
}
|
||||
function isProtectedWeekYearToken(token) {
|
||||
return protectedWeekYearTokens.indexOf(token) !== -1;
|
||||
}
|
||||
function throwProtectedError(token, format, input) {
|
||||
if (token === 'YYYY') {
|
||||
throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));
|
||||
} else if (token === 'YY') {
|
||||
throw new RangeError("Use `yy` instead of `YY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));
|
||||
} else if (token === 'D') {
|
||||
throw new RangeError("Use `d` instead of `D` (in `".concat(format, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));
|
||||
} else if (token === 'DD') {
|
||||
throw new RangeError("Use `dd` instead of `DD` (in `".concat(format, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = requiredArgs;
|
||||
function requiredArgs(required, args) {
|
||||
if (args.length < required) {
|
||||
throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');
|
||||
}
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.getRoundingMethod = getRoundingMethod;
|
||||
var roundingMap = {
|
||||
ceil: Math.ceil,
|
||||
round: Math.round,
|
||||
floor: Math.floor,
|
||||
trunc: function trunc(value) {
|
||||
return value < 0 ? Math.ceil(value) : Math.floor(value);
|
||||
} // Math.trunc is not supported by IE
|
||||
};
|
||||
|
||||
var defaultRoundingMethod = 'trunc';
|
||||
function getRoundingMethod(method) {
|
||||
return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = setUTCDay;
|
||||
var _index = _interopRequireDefault(require("../../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../requiredArgs/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../toInteger/index.js"));
|
||||
var _index4 = require("../defaultOptions/index.js");
|
||||
function setUTCDay(dirtyDate, dirtyDay, options) {
|
||||
var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;
|
||||
(0, _index2.default)(2, arguments);
|
||||
var defaultOptions = (0, _index4.getDefaultOptions)();
|
||||
var weekStartsOn = (0, _index3.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);
|
||||
|
||||
// Test if weekStartsOn is between 0 and 6 _and_ is not NaN
|
||||
if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
|
||||
throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');
|
||||
}
|
||||
var date = (0, _index.default)(dirtyDate);
|
||||
var day = (0, _index3.default)(dirtyDay);
|
||||
var currentDay = date.getUTCDay();
|
||||
var remainder = day % 7;
|
||||
var dayIndex = (remainder + 7) % 7;
|
||||
var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;
|
||||
date.setUTCDate(date.getUTCDate() + diff);
|
||||
return date;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = setUTCISODay;
|
||||
var _index = _interopRequireDefault(require("../../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../requiredArgs/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../toInteger/index.js"));
|
||||
function setUTCISODay(dirtyDate, dirtyDay) {
|
||||
(0, _index2.default)(2, arguments);
|
||||
var day = (0, _index3.default)(dirtyDay);
|
||||
if (day % 7 === 0) {
|
||||
day = day - 7;
|
||||
}
|
||||
var weekStartsOn = 1;
|
||||
var date = (0, _index.default)(dirtyDate);
|
||||
var currentDay = date.getUTCDay();
|
||||
var remainder = day % 7;
|
||||
var dayIndex = (remainder + 7) % 7;
|
||||
var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;
|
||||
date.setUTCDate(date.getUTCDate() + diff);
|
||||
return date;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = setUTCISOWeek;
|
||||
var _index = _interopRequireDefault(require("../toInteger/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../../toDate/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../getUTCISOWeek/index.js"));
|
||||
var _index4 = _interopRequireDefault(require("../requiredArgs/index.js"));
|
||||
function setUTCISOWeek(dirtyDate, dirtyISOWeek) {
|
||||
(0, _index4.default)(2, arguments);
|
||||
var date = (0, _index2.default)(dirtyDate);
|
||||
var isoWeek = (0, _index.default)(dirtyISOWeek);
|
||||
var diff = (0, _index3.default)(date) - isoWeek;
|
||||
date.setUTCDate(date.getUTCDate() - diff * 7);
|
||||
return date;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = setUTCWeek;
|
||||
var _index = _interopRequireDefault(require("../toInteger/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../../toDate/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../getUTCWeek/index.js"));
|
||||
var _index4 = _interopRequireDefault(require("../requiredArgs/index.js"));
|
||||
function setUTCWeek(dirtyDate, dirtyWeek, options) {
|
||||
(0, _index4.default)(2, arguments);
|
||||
var date = (0, _index2.default)(dirtyDate);
|
||||
var week = (0, _index.default)(dirtyWeek);
|
||||
var diff = (0, _index3.default)(date, options) - week;
|
||||
date.setUTCDate(date.getUTCDate() - diff * 7);
|
||||
return date;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = startOfUTCISOWeek;
|
||||
var _index = _interopRequireDefault(require("../../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../requiredArgs/index.js"));
|
||||
function startOfUTCISOWeek(dirtyDate) {
|
||||
(0, _index2.default)(1, arguments);
|
||||
var weekStartsOn = 1;
|
||||
var date = (0, _index.default)(dirtyDate);
|
||||
var day = date.getUTCDay();
|
||||
var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;
|
||||
date.setUTCDate(date.getUTCDate() - diff);
|
||||
date.setUTCHours(0, 0, 0, 0);
|
||||
return date;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = startOfUTCISOWeekYear;
|
||||
var _index = _interopRequireDefault(require("../getUTCISOWeekYear/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../startOfUTCISOWeek/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../requiredArgs/index.js"));
|
||||
function startOfUTCISOWeekYear(dirtyDate) {
|
||||
(0, _index3.default)(1, arguments);
|
||||
var year = (0, _index.default)(dirtyDate);
|
||||
var fourthOfJanuary = new Date(0);
|
||||
fourthOfJanuary.setUTCFullYear(year, 0, 4);
|
||||
fourthOfJanuary.setUTCHours(0, 0, 0, 0);
|
||||
var date = (0, _index2.default)(fourthOfJanuary);
|
||||
return date;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = startOfUTCWeek;
|
||||
var _index = _interopRequireDefault(require("../../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../requiredArgs/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../toInteger/index.js"));
|
||||
var _index4 = require("../defaultOptions/index.js");
|
||||
function startOfUTCWeek(dirtyDate, options) {
|
||||
var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;
|
||||
(0, _index2.default)(1, arguments);
|
||||
var defaultOptions = (0, _index4.getDefaultOptions)();
|
||||
var weekStartsOn = (0, _index3.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);
|
||||
|
||||
// Test if weekStartsOn is between 0 and 6 _and_ is not NaN
|
||||
if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
|
||||
throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');
|
||||
}
|
||||
var date = (0, _index.default)(dirtyDate);
|
||||
var day = date.getUTCDay();
|
||||
var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;
|
||||
date.setUTCDate(date.getUTCDate() - diff);
|
||||
date.setUTCHours(0, 0, 0, 0);
|
||||
return date;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = startOfUTCWeekYear;
|
||||
var _index = _interopRequireDefault(require("../getUTCWeekYear/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../requiredArgs/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../startOfUTCWeek/index.js"));
|
||||
var _index4 = _interopRequireDefault(require("../toInteger/index.js"));
|
||||
var _index5 = require("../defaultOptions/index.js");
|
||||
function startOfUTCWeekYear(dirtyDate, options) {
|
||||
var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;
|
||||
(0, _index2.default)(1, arguments);
|
||||
var defaultOptions = (0, _index5.getDefaultOptions)();
|
||||
var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);
|
||||
var year = (0, _index.default)(dirtyDate, options);
|
||||
var firstWeek = new Date(0);
|
||||
firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);
|
||||
firstWeek.setUTCHours(0, 0, 0, 0);
|
||||
var date = (0, _index3.default)(firstWeek, options);
|
||||
return date;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.assertType = assertType;
|
||||
exports.generateOffset = generateOffset;
|
||||
exports.resetDefaultOptions = resetDefaultOptions;
|
||||
var _index = _interopRequireDefault(require("../addLeadingZeros/index.js"));
|
||||
var _index2 = require("../defaultOptions/index.js");
|
||||
function assertType(_) {}
|
||||
function resetDefaultOptions() {
|
||||
(0, _index2.setDefaultOptions)({});
|
||||
}
|
||||
|
||||
// This makes sure we create the consistent offsets across timezones, no matter where these tests are ran.
|
||||
function generateOffset(originalDate) {
|
||||
// Add the timezone.
|
||||
var offset = '';
|
||||
var tzOffset = originalDate.getTimezoneOffset();
|
||||
if (tzOffset !== 0) {
|
||||
var absoluteOffset = Math.abs(tzOffset);
|
||||
var hourOffset = (0, _index.default)(Math.floor(absoluteOffset / 60), 2);
|
||||
var minuteOffset = (0, _index.default)(absoluteOffset % 60, 2);
|
||||
// If less than 0, the sign is +, because it is ahead of time.
|
||||
var sign = tzOffset < 0 ? '+' : '-';
|
||||
offset = "".concat(sign).concat(hourOffset, ":").concat(minuteOffset);
|
||||
} else {
|
||||
offset = 'Z';
|
||||
}
|
||||
return offset;
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = toInteger;
|
||||
function toInteger(dirtyNumber) {
|
||||
if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {
|
||||
return NaN;
|
||||
}
|
||||
var number = Number(dirtyNumber);
|
||||
if (isNaN(number)) {
|
||||
return number;
|
||||
}
|
||||
return number < 0 ? Math.ceil(number) : Math.floor(number);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { add } from 'date-fns'
|
||||
export default add
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = add;
|
||||
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
||||
var _index = _interopRequireDefault(require("../addDays/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../addMonths/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index4 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
var _index5 = _interopRequireDefault(require("../_lib/toInteger/index.js"));
|
||||
/**
|
||||
* @name add
|
||||
* @category Common Helpers
|
||||
* @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.
|
||||
*
|
||||
* @description
|
||||
* Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.
|
||||
*
|
||||
* @param {Date|Number} date - the date to be changed
|
||||
* @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
|
||||
*
|
||||
* | Key | Description |
|
||||
* |----------------|------------------------------------|
|
||||
* | years | Amount of years to be added |
|
||||
* | months | Amount of months to be added |
|
||||
* | weeks | Amount of weeks to be added |
|
||||
* | days | Amount of days to be added |
|
||||
* | hours | Amount of hours to be added |
|
||||
* | minutes | Amount of minutes to be added |
|
||||
* | seconds | Amount of seconds to be added |
|
||||
*
|
||||
* All values default to 0
|
||||
*
|
||||
* @returns {Date} the new date with the seconds added
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Add the following duration to 1 September 2014, 10:19:50
|
||||
* 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
|
||||
*/
|
||||
function add(dirtyDate, duration) {
|
||||
(0, _index4.default)(2, arguments);
|
||||
if (!duration || (0, _typeof2.default)(duration) !== 'object') return new Date(NaN);
|
||||
var years = duration.years ? (0, _index5.default)(duration.years) : 0;
|
||||
var months = duration.months ? (0, _index5.default)(duration.months) : 0;
|
||||
var weeks = duration.weeks ? (0, _index5.default)(duration.weeks) : 0;
|
||||
var days = duration.days ? (0, _index5.default)(duration.days) : 0;
|
||||
var hours = duration.hours ? (0, _index5.default)(duration.hours) : 0;
|
||||
var minutes = duration.minutes ? (0, _index5.default)(duration.minutes) : 0;
|
||||
var seconds = duration.seconds ? (0, _index5.default)(duration.seconds) : 0;
|
||||
|
||||
// Add years and months
|
||||
var date = (0, _index3.default)(dirtyDate);
|
||||
var dateWithMonths = months || years ? (0, _index2.default)(date, months + years * 12) : date;
|
||||
|
||||
// Add weeks and days
|
||||
var dateWithDays = days || weeks ? (0, _index.default)(dateWithMonths, days + weeks * 7) : dateWithMonths;
|
||||
|
||||
// Add days, hours, minutes and seconds
|
||||
var minutesToAdd = minutes + hours * 60;
|
||||
var secondsToAdd = seconds + minutesToAdd * 60;
|
||||
var msToAdd = secondsToAdd * 1000;
|
||||
var finalDate = new Date(dateWithDays.getTime() + msToAdd);
|
||||
return finalDate;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (date: Date | number, duration: Duration) => Date
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/add/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { addBusinessDays } from 'date-fns'
|
||||
export default addBusinessDays
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = addBusinessDays;
|
||||
var _index = _interopRequireDefault(require("../isWeekend/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/toInteger/index.js"));
|
||||
var _index4 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
var _index5 = _interopRequireDefault(require("../isSunday/index.js"));
|
||||
var _index6 = _interopRequireDefault(require("../isSaturday/index.js"));
|
||||
/**
|
||||
* @name addBusinessDays
|
||||
* @category Day Helpers
|
||||
* @summary Add the specified number of business days (mon - fri) to the given date.
|
||||
*
|
||||
* @description
|
||||
* Add the specified number of business days (mon - fri) to the given date, ignoring weekends.
|
||||
*
|
||||
* @param {Date|Number} date - the date to be changed
|
||||
* @param {Number} amount - the amount of business days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
|
||||
* @returns {Date} the new date with the business days added
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Add 10 business days to 1 September 2014:
|
||||
* const result = addBusinessDays(new Date(2014, 8, 1), 10)
|
||||
* //=> Mon Sep 15 2014 00:00:00 (skipped weekend days)
|
||||
*/
|
||||
function addBusinessDays(dirtyDate, dirtyAmount) {
|
||||
(0, _index4.default)(2, arguments);
|
||||
var date = (0, _index2.default)(dirtyDate);
|
||||
var startedOnWeekend = (0, _index.default)(date);
|
||||
var amount = (0, _index3.default)(dirtyAmount);
|
||||
if (isNaN(amount)) return new Date(NaN);
|
||||
var hours = date.getHours();
|
||||
var sign = amount < 0 ? -1 : 1;
|
||||
var fullWeeks = (0, _index3.default)(amount / 5);
|
||||
date.setDate(date.getDate() + fullWeeks * 7);
|
||||
|
||||
// Get remaining days not part of a full week
|
||||
var restDays = Math.abs(amount % 5);
|
||||
|
||||
// Loops over remaining days
|
||||
while (restDays > 0) {
|
||||
date.setDate(date.getDate() + sign);
|
||||
if (!(0, _index.default)(date)) restDays -= 1;
|
||||
}
|
||||
|
||||
// If the date is a weekend day and we reduce a dividable of
|
||||
// 5 from it, we land on a weekend date.
|
||||
// To counter this, we add days accordingly to land on the next business day
|
||||
if (startedOnWeekend && (0, _index.default)(date) && amount !== 0) {
|
||||
// If we're reducing days, we want to add days until we land on a weekday
|
||||
// If we're adding days we want to reduce days until we land on a weekday
|
||||
if ((0, _index6.default)(date)) date.setDate(date.getDate() + (sign < 0 ? 2 : -1));
|
||||
if ((0, _index5.default)(date)) date.setDate(date.getDate() + (sign < 0 ? 1 : -2));
|
||||
}
|
||||
|
||||
// Restore hours to avoid DST lag
|
||||
date.setHours(hours);
|
||||
return date;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (date: Date | number, amount: number) => Date
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/addBusinessDays/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { addDays } from 'date-fns'
|
||||
export default addDays
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = addDays;
|
||||
var _index = _interopRequireDefault(require("../_lib/toInteger/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name addDays
|
||||
* @category Day Helpers
|
||||
* @summary Add the specified number of days to the given date.
|
||||
*
|
||||
* @description
|
||||
* Add the specified number of days to the given date.
|
||||
*
|
||||
* @param {Date|Number} date - the date to be changed
|
||||
* @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
|
||||
* @returns {Date} - the new date with the days added
|
||||
* @throws {TypeError} - 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Add 10 days to 1 September 2014:
|
||||
* const result = addDays(new Date(2014, 8, 1), 10)
|
||||
* //=> Thu Sep 11 2014 00:00:00
|
||||
*/
|
||||
function addDays(dirtyDate, dirtyAmount) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var date = (0, _index2.default)(dirtyDate);
|
||||
var amount = (0, _index.default)(dirtyAmount);
|
||||
if (isNaN(amount)) {
|
||||
return new Date(NaN);
|
||||
}
|
||||
if (!amount) {
|
||||
// If 0 days, no-op to avoid changing times in the hour before end of DST
|
||||
return date;
|
||||
}
|
||||
date.setDate(date.getDate() + amount);
|
||||
return date;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (date: Date | number, amount: number) => Date
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/addDays/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { addHours } from 'date-fns'
|
||||
export default addHours
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = addHours;
|
||||
var _index = _interopRequireDefault(require("../_lib/toInteger/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../addMilliseconds/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
var MILLISECONDS_IN_HOUR = 3600000;
|
||||
|
||||
/**
|
||||
* @name addHours
|
||||
* @category Hour Helpers
|
||||
* @summary Add the specified number of hours to the given date.
|
||||
*
|
||||
* @description
|
||||
* Add the specified number of hours to the given date.
|
||||
*
|
||||
* @param {Date|Number} date - the date to be changed
|
||||
* @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
|
||||
* @returns {Date} the new date with the hours added
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Add 2 hours to 10 July 2014 23:00:00:
|
||||
* const result = addHours(new Date(2014, 6, 10, 23, 0), 2)
|
||||
* //=> Fri Jul 11 2014 01:00:00
|
||||
*/
|
||||
function addHours(dirtyDate, dirtyAmount) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var amount = (0, _index.default)(dirtyAmount);
|
||||
return (0, _index2.default)(dirtyDate, amount * MILLISECONDS_IN_HOUR);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (date: Date | number, amount: number) => Date
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/addHours/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { addISOWeekYears } from 'date-fns'
|
||||
export default addISOWeekYears
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = addISOWeekYears;
|
||||
var _index = _interopRequireDefault(require("../_lib/toInteger/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../getISOWeekYear/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../setISOWeekYear/index.js"));
|
||||
var _index4 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name addISOWeekYears
|
||||
* @category ISO Week-Numbering Year Helpers
|
||||
* @summary Add the specified number of ISO week-numbering years to the given date.
|
||||
*
|
||||
* @description
|
||||
* Add the specified number of ISO week-numbering years to the given date.
|
||||
*
|
||||
* ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
|
||||
*
|
||||
* @param {Date|Number} date - the date to be changed
|
||||
* @param {Number} amount - the amount of ISO week-numbering years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
|
||||
* @returns {Date} the new date with the ISO week-numbering years added
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Add 5 ISO week-numbering years to 2 July 2010:
|
||||
* const result = addISOWeekYears(new Date(2010, 6, 2), 5)
|
||||
* //=> Fri Jun 26 2015 00:00:00
|
||||
*/
|
||||
function addISOWeekYears(dirtyDate, dirtyAmount) {
|
||||
(0, _index4.default)(2, arguments);
|
||||
var amount = (0, _index.default)(dirtyAmount);
|
||||
return (0, _index3.default)(dirtyDate, (0, _index2.default)(dirtyDate) + amount);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (date: Date | number, amount: number) => Date
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/addISOWeekYears/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { addMilliseconds } from 'date-fns'
|
||||
export default addMilliseconds
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = addMilliseconds;
|
||||
var _index = _interopRequireDefault(require("../_lib/toInteger/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name addMilliseconds
|
||||
* @category Millisecond Helpers
|
||||
* @summary Add the specified number of milliseconds to the given date.
|
||||
*
|
||||
* @description
|
||||
* Add the specified number of milliseconds to the given date.
|
||||
*
|
||||
* @param {Date|Number} date - the date to be changed
|
||||
* @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
|
||||
* @returns {Date} the new date with the milliseconds added
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Add 750 milliseconds to 10 July 2014 12:45:30.000:
|
||||
* const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)
|
||||
* //=> Thu Jul 10 2014 12:45:30.750
|
||||
*/
|
||||
function addMilliseconds(dirtyDate, dirtyAmount) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var timestamp = (0, _index2.default)(dirtyDate).getTime();
|
||||
var amount = (0, _index.default)(dirtyAmount);
|
||||
return new Date(timestamp + amount);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (date: Date | number, amount: number) => Date
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/addMilliseconds/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { addMinutes } from 'date-fns'
|
||||
export default addMinutes
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = addMinutes;
|
||||
var _index = _interopRequireDefault(require("../_lib/toInteger/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../addMilliseconds/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
var MILLISECONDS_IN_MINUTE = 60000;
|
||||
|
||||
/**
|
||||
* @name addMinutes
|
||||
* @category Minute Helpers
|
||||
* @summary Add the specified number of minutes to the given date.
|
||||
*
|
||||
* @description
|
||||
* Add the specified number of minutes to the given date.
|
||||
*
|
||||
* @param {Date|Number} date - the date to be changed
|
||||
* @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
|
||||
* @returns {Date} the new date with the minutes added
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Add 30 minutes to 10 July 2014 12:00:00:
|
||||
* const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)
|
||||
* //=> Thu Jul 10 2014 12:30:00
|
||||
*/
|
||||
function addMinutes(dirtyDate, dirtyAmount) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var amount = (0, _index.default)(dirtyAmount);
|
||||
return (0, _index2.default)(dirtyDate, amount * MILLISECONDS_IN_MINUTE);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (date: Date | number, amount: number) => Date
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/addMinutes/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { addMonths } from 'date-fns'
|
||||
export default addMonths
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = addMonths;
|
||||
var _index = _interopRequireDefault(require("../_lib/toInteger/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name addMonths
|
||||
* @category Month Helpers
|
||||
* @summary Add the specified number of months to the given date.
|
||||
*
|
||||
* @description
|
||||
* Add the specified number of months to the given date.
|
||||
*
|
||||
* @param {Date|Number} date - the date to be changed
|
||||
* @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
|
||||
* @returns {Date} the new date with the months added
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Add 5 months to 1 September 2014:
|
||||
* const result = addMonths(new Date(2014, 8, 1), 5)
|
||||
* //=> Sun Feb 01 2015 00:00:00
|
||||
*/
|
||||
function addMonths(dirtyDate, dirtyAmount) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var date = (0, _index2.default)(dirtyDate);
|
||||
var amount = (0, _index.default)(dirtyAmount);
|
||||
if (isNaN(amount)) {
|
||||
return new Date(NaN);
|
||||
}
|
||||
if (!amount) {
|
||||
// If 0 months, no-op to avoid changing times in the hour before end of DST
|
||||
return date;
|
||||
}
|
||||
var dayOfMonth = date.getDate();
|
||||
|
||||
// The JS Date object supports date math by accepting out-of-bounds values for
|
||||
// month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and
|
||||
// new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we
|
||||
// want except that dates will wrap around the end of a month, meaning that
|
||||
// new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So
|
||||
// we'll default to the end of the desired month by adding 1 to the desired
|
||||
// month and using a date of 0 to back up one day to the end of the desired
|
||||
// month.
|
||||
var endOfDesiredMonth = new Date(date.getTime());
|
||||
endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);
|
||||
var daysInMonth = endOfDesiredMonth.getDate();
|
||||
if (dayOfMonth >= daysInMonth) {
|
||||
// If we're already at the end of the month, then this is the correct date
|
||||
// and we're done.
|
||||
return endOfDesiredMonth;
|
||||
} else {
|
||||
// Otherwise, we now know that setting the original day-of-month value won't
|
||||
// cause an overflow, so set the desired day-of-month. Note that we can't
|
||||
// just set the date of `endOfDesiredMonth` because that object may have had
|
||||
// its time changed in the unusual case where where a DST transition was on
|
||||
// the last day of the month and its local time was in the hour skipped or
|
||||
// repeated next to a DST transition. So we use `date` instead which is
|
||||
// guaranteed to still have the original time.
|
||||
date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);
|
||||
return date;
|
||||
}
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (date: Date | number, amount: number) => Date
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/addMonths/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { addQuarters } from 'date-fns'
|
||||
export default addQuarters
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = addQuarters;
|
||||
var _index = _interopRequireDefault(require("../_lib/toInteger/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../addMonths/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name addQuarters
|
||||
* @category Quarter Helpers
|
||||
* @summary Add the specified number of year quarters to the given date.
|
||||
*
|
||||
* @description
|
||||
* Add the specified number of year quarters to the given date.
|
||||
*
|
||||
* @param {Date|Number} date - the date to be changed
|
||||
* @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
|
||||
* @returns {Date} the new date with the quarters added
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Add 1 quarter to 1 September 2014:
|
||||
* const result = addQuarters(new Date(2014, 8, 1), 1)
|
||||
* //=> Mon Dec 01 2014 00:00:00
|
||||
*/
|
||||
function addQuarters(dirtyDate, dirtyAmount) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var amount = (0, _index.default)(dirtyAmount);
|
||||
var months = amount * 3;
|
||||
return (0, _index2.default)(dirtyDate, months);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (date: Date | number, amount: number) => Date
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/addQuarters/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { addSeconds } from 'date-fns'
|
||||
export default addSeconds
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = addSeconds;
|
||||
var _index = _interopRequireDefault(require("../_lib/toInteger/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../addMilliseconds/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name addSeconds
|
||||
* @category Second Helpers
|
||||
* @summary Add the specified number of seconds to the given date.
|
||||
*
|
||||
* @description
|
||||
* Add the specified number of seconds to the given date.
|
||||
*
|
||||
* @param {Date|Number} date - the date to be changed
|
||||
* @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
|
||||
* @returns {Date} the new date with the seconds added
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Add 30 seconds to 10 July 2014 12:45:00:
|
||||
* const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)
|
||||
* //=> Thu Jul 10 2014 12:45:30
|
||||
*/
|
||||
function addSeconds(dirtyDate, dirtyAmount) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var amount = (0, _index.default)(dirtyAmount);
|
||||
return (0, _index2.default)(dirtyDate, amount * 1000);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (date: Date | number, amount: number) => Date
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/addSeconds/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { addWeeks } from 'date-fns'
|
||||
export default addWeeks
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = addWeeks;
|
||||
var _index = _interopRequireDefault(require("../_lib/toInteger/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../addDays/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name addWeeks
|
||||
* @category Week Helpers
|
||||
* @summary Add the specified number of weeks to the given date.
|
||||
*
|
||||
* @description
|
||||
* Add the specified number of week to the given date.
|
||||
*
|
||||
* @param {Date|Number} date - the date to be changed
|
||||
* @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
|
||||
* @returns {Date} the new date with the weeks added
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Add 4 weeks to 1 September 2014:
|
||||
* const result = addWeeks(new Date(2014, 8, 1), 4)
|
||||
* //=> Mon Sep 29 2014 00:00:00
|
||||
*/
|
||||
function addWeeks(dirtyDate, dirtyAmount) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var amount = (0, _index.default)(dirtyAmount);
|
||||
var days = amount * 7;
|
||||
return (0, _index2.default)(dirtyDate, days);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (date: Date | number, amount: number) => Date
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/addWeeks/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { addYears } from 'date-fns'
|
||||
export default addYears
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = addYears;
|
||||
var _index = _interopRequireDefault(require("../_lib/toInteger/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../addMonths/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name addYears
|
||||
* @category Year Helpers
|
||||
* @summary Add the specified number of years to the given date.
|
||||
*
|
||||
* @description
|
||||
* Add the specified number of years to the given date.
|
||||
*
|
||||
* @param {Date|Number} date - the date to be changed
|
||||
* @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
|
||||
* @returns {Date} the new date with the years added
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Add 5 years to 1 September 2014:
|
||||
* const result = addYears(new Date(2014, 8, 1), 5)
|
||||
* //=> Sun Sep 01 2019 00:00:00
|
||||
*/
|
||||
function addYears(dirtyDate, dirtyAmount) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var amount = (0, _index.default)(dirtyAmount);
|
||||
return (0, _index2.default)(dirtyDate, amount * 12);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (date: Date | number, amount: number) => Date
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/addYears/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { areIntervalsOverlapping } from 'date-fns'
|
||||
export default areIntervalsOverlapping
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = areIntervalsOverlapping;
|
||||
var _index = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name areIntervalsOverlapping
|
||||
* @category Interval Helpers
|
||||
* @summary Is the given time interval overlapping with another time interval?
|
||||
*
|
||||
* @description
|
||||
* Is the given time interval overlapping with another time interval? Adjacent intervals do not count as overlapping.
|
||||
*
|
||||
* @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}
|
||||
* @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}
|
||||
* @param {Object} [options] - the object with options
|
||||
* @param {Boolean} [options.inclusive=false] - whether the comparison is inclusive or not
|
||||
* @returns {Boolean} whether the time intervals are overlapping
|
||||
* @throws {TypeError} 2 arguments required
|
||||
* @throws {RangeError} The start of an interval cannot be after its end
|
||||
* @throws {RangeError} Date in interval cannot be `Invalid Date`
|
||||
*
|
||||
* @example
|
||||
* // For overlapping time intervals:
|
||||
* 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) }
|
||||
* )
|
||||
* //=> true
|
||||
*
|
||||
* @example
|
||||
* // For non-overlapping time intervals:
|
||||
* areIntervalsOverlapping(
|
||||
* { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
|
||||
* { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }
|
||||
* )
|
||||
* //=> false
|
||||
*
|
||||
* @example
|
||||
* // For adjacent time intervals:
|
||||
* areIntervalsOverlapping(
|
||||
* { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
|
||||
* { start: new Date(2014, 0, 20), end: new Date(2014, 0, 30) }
|
||||
* )
|
||||
* //=> false
|
||||
*
|
||||
* @example
|
||||
* // Using the inclusive option:
|
||||
* areIntervalsOverlapping(
|
||||
* { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
|
||||
* { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) }
|
||||
* )
|
||||
* //=> false
|
||||
* areIntervalsOverlapping(
|
||||
* { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
|
||||
* { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) },
|
||||
* { inclusive: true }
|
||||
* )
|
||||
* //=> true
|
||||
*/
|
||||
function areIntervalsOverlapping(intervalLeft, intervalRight, options) {
|
||||
(0, _index2.default)(2, arguments);
|
||||
var leftStartTime = (0, _index.default)(intervalLeft === null || intervalLeft === void 0 ? void 0 : intervalLeft.start).getTime();
|
||||
var leftEndTime = (0, _index.default)(intervalLeft === null || intervalLeft === void 0 ? void 0 : intervalLeft.end).getTime();
|
||||
var rightStartTime = (0, _index.default)(intervalRight === null || intervalRight === void 0 ? void 0 : intervalRight.start).getTime();
|
||||
var rightEndTime = (0, _index.default)(intervalRight === null || intervalRight === void 0 ? void 0 : intervalRight.end).getTime();
|
||||
|
||||
// Throw an exception if start date is after end date or if any date is `Invalid Date`
|
||||
if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {
|
||||
throw new RangeError('Invalid interval');
|
||||
}
|
||||
if (options !== null && options !== void 0 && options.inclusive) {
|
||||
return leftStartTime <= rightEndTime && rightStartTime <= leftEndTime;
|
||||
}
|
||||
return leftStartTime < rightEndTime && rightStartTime < leftEndTime;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
intervalLeft: Interval,
|
||||
intervalRight: Interval,
|
||||
options?: {
|
||||
inclusive?: boolean,
|
||||
}
|
||||
) => boolean
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/areIntervalsOverlapping/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { clamp } from 'date-fns'
|
||||
export default clamp
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = clamp;
|
||||
var _index = _interopRequireDefault(require("../max/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../min/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name clamp
|
||||
* @category Interval Helpers
|
||||
* @summary Return a date bounded by the start and the end of the given interval
|
||||
*
|
||||
* @description
|
||||
* Clamps a date to the lower bound with the start of the interval and the upper
|
||||
* bound with the end of the interval.
|
||||
*
|
||||
* - When the date is less than the start of the interval, the start is returned.
|
||||
* - When the date is greater than the end of the interval, the end is returned.
|
||||
* - Otherwise the date is returned.
|
||||
*
|
||||
* @example
|
||||
* // What is Mar, 21, 2021 bounded to an interval starting at Mar, 22, 2021 and ending at Apr, 01, 2021
|
||||
* const result = clamp(new Date(2021, 2, 21), {
|
||||
* start: new Date(2021, 2, 22),
|
||||
* end: new Date(2021, 3, 1),
|
||||
* })
|
||||
* //=> Mon Mar 22 2021 00:00:00
|
||||
*
|
||||
* @param {Date | Number} date - the date to be bounded
|
||||
* @param {Interval} interval - the interval to bound to
|
||||
* @returns {Date} the date bounded by the start and the end of the interval
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*/
|
||||
function clamp(date, _ref) {
|
||||
var start = _ref.start,
|
||||
end = _ref.end;
|
||||
(0, _index3.default)(2, arguments);
|
||||
return (0, _index2.default)([(0, _index.default)([date, start]), end]);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (date: Date | number, interval: Interval) => Date
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/clamp/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { closestIndexTo } from 'date-fns'
|
||||
export default closestIndexTo
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = closestIndexTo;
|
||||
var _index = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name closestIndexTo
|
||||
* @category Common Helpers
|
||||
* @summary Return an index of the closest date from the array comparing to the given date.
|
||||
*
|
||||
* @description
|
||||
* Return an index of the closest date from the array comparing to the given date.
|
||||
*
|
||||
* @param {Date | Number} dateToCompare - the date to compare with
|
||||
* @param {Array<Date> | Array<number>} datesArray - the array to search
|
||||
* @returns {Number | undefined} an index of the date closest to the given date or undefined if no valid value is given
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Which date is closer to 6 September 2015?
|
||||
* 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
|
||||
*/
|
||||
function closestIndexTo(dirtyDateToCompare, dirtyDatesArray) {
|
||||
(0, _index2.default)(2, arguments);
|
||||
var dateToCompare = (0, _index.default)(dirtyDateToCompare);
|
||||
if (isNaN(Number(dateToCompare))) return NaN;
|
||||
var timeToCompare = dateToCompare.getTime();
|
||||
var datesArray;
|
||||
// `dirtyDatesArray` is undefined or null
|
||||
if (dirtyDatesArray == null) {
|
||||
datesArray = [];
|
||||
|
||||
// `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method
|
||||
} else if (typeof dirtyDatesArray.forEach === 'function') {
|
||||
datesArray = dirtyDatesArray;
|
||||
|
||||
// If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array
|
||||
} else {
|
||||
datesArray = Array.prototype.slice.call(dirtyDatesArray);
|
||||
}
|
||||
var result;
|
||||
var minDistance;
|
||||
datesArray.forEach(function (dirtyDate, index) {
|
||||
var currentDate = (0, _index.default)(dirtyDate);
|
||||
if (isNaN(Number(currentDate))) {
|
||||
result = NaN;
|
||||
minDistance = NaN;
|
||||
return;
|
||||
}
|
||||
var distance = Math.abs(timeToCompare - currentDate.getTime());
|
||||
if (result == null || distance < Number(minDistance)) {
|
||||
result = index;
|
||||
minDistance = distance;
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateToCompare: Date | number,
|
||||
datesArray: (Date | number)[]
|
||||
) => ?number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/closestIndexTo/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { closestTo } from 'date-fns'
|
||||
export default closestTo
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = closestTo;
|
||||
var _index = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name closestTo
|
||||
* @category Common Helpers
|
||||
* @summary Return a date from the array closest to the given date.
|
||||
*
|
||||
* @description
|
||||
* Return a date from the array closest to the given date.
|
||||
*
|
||||
* @param {Date | Number} dateToCompare - the date to compare with
|
||||
* @param {Array<Date> | Array<number>} datesArray - the array to search
|
||||
* @returns {Date | undefined} the date from the array closest to the given date or undefined if no valid value is given
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?
|
||||
* 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
|
||||
*/
|
||||
function closestTo(dirtyDateToCompare, dirtyDatesArray) {
|
||||
(0, _index2.default)(2, arguments);
|
||||
var dateToCompare = (0, _index.default)(dirtyDateToCompare);
|
||||
if (isNaN(Number(dateToCompare))) return new Date(NaN);
|
||||
var timeToCompare = dateToCompare.getTime();
|
||||
var datesArray;
|
||||
// `dirtyDatesArray` is undefined or null
|
||||
if (dirtyDatesArray == null) {
|
||||
datesArray = [];
|
||||
|
||||
// `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method
|
||||
} else if (typeof dirtyDatesArray.forEach === 'function') {
|
||||
datesArray = dirtyDatesArray;
|
||||
|
||||
// If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array
|
||||
} else {
|
||||
datesArray = Array.prototype.slice.call(dirtyDatesArray);
|
||||
}
|
||||
var result;
|
||||
var minDistance;
|
||||
datesArray.forEach(function (dirtyDate) {
|
||||
var currentDate = (0, _index.default)(dirtyDate);
|
||||
if (isNaN(Number(currentDate))) {
|
||||
result = new Date(NaN);
|
||||
minDistance = NaN;
|
||||
return;
|
||||
}
|
||||
var distance = Math.abs(timeToCompare - currentDate.getTime());
|
||||
if (result == null || distance < Number(minDistance)) {
|
||||
result = currentDate;
|
||||
minDistance = distance;
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateToCompare: Date | number,
|
||||
datesArray: (Date | number)[]
|
||||
) => ?Date
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/closestTo/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { compareAsc } from 'date-fns'
|
||||
export default compareAsc
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = compareAsc;
|
||||
var _index = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name compareAsc
|
||||
* @category Common Helpers
|
||||
* @summary Compare the two dates and return -1, 0 or 1.
|
||||
*
|
||||
* @description
|
||||
* Compare the two dates and return 1 if the first date is after the second,
|
||||
* -1 if the first date is before the second or 0 if dates are equal.
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the first date to compare
|
||||
* @param {Date|Number} dateRight - the second date to compare
|
||||
* @returns {Number} the result of the comparison
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Compare 11 February 1987 and 10 July 1989:
|
||||
* const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))
|
||||
* //=> -1
|
||||
*
|
||||
* @example
|
||||
* // Sort the array of dates:
|
||||
* 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
|
||||
* // ]
|
||||
*/
|
||||
function compareAsc(dirtyDateLeft, dirtyDateRight) {
|
||||
(0, _index2.default)(2, arguments);
|
||||
var dateLeft = (0, _index.default)(dirtyDateLeft);
|
||||
var dateRight = (0, _index.default)(dirtyDateRight);
|
||||
var diff = dateLeft.getTime() - dateRight.getTime();
|
||||
if (diff < 0) {
|
||||
return -1;
|
||||
} else if (diff > 0) {
|
||||
return 1;
|
||||
// Return 0 if diff is 0; return NaN if diff is NaN
|
||||
} else {
|
||||
return diff;
|
||||
}
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/compareAsc/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { compareDesc } from 'date-fns'
|
||||
export default compareDesc
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = compareDesc;
|
||||
var _index = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name compareDesc
|
||||
* @category Common Helpers
|
||||
* @summary Compare the two dates reverse chronologically and return -1, 0 or 1.
|
||||
*
|
||||
* @description
|
||||
* Compare the two dates and return -1 if the first date is after the second,
|
||||
* 1 if the first date is before the second or 0 if dates are equal.
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the first date to compare
|
||||
* @param {Date|Number} dateRight - the second date to compare
|
||||
* @returns {Number} the result of the comparison
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // Compare 11 February 1987 and 10 July 1989 reverse chronologically:
|
||||
* const result = compareDesc(new Date(1987, 1, 11), new Date(1989, 6, 10))
|
||||
* //=> 1
|
||||
*
|
||||
* @example
|
||||
* // Sort the array of dates in reverse chronological order:
|
||||
* 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
|
||||
* // ]
|
||||
*/
|
||||
function compareDesc(dirtyDateLeft, dirtyDateRight) {
|
||||
(0, _index2.default)(2, arguments);
|
||||
var dateLeft = (0, _index.default)(dirtyDateLeft);
|
||||
var dateRight = (0, _index.default)(dirtyDateRight);
|
||||
var diff = dateLeft.getTime() - dateRight.getTime();
|
||||
if (diff > 0) {
|
||||
return -1;
|
||||
} else if (diff < 0) {
|
||||
return 1;
|
||||
// Return 0 if diff is 0; return NaN if diff is NaN
|
||||
} else {
|
||||
return diff;
|
||||
}
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/compareDesc/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export const daysInWeek: number
|
||||
export const daysInYear: number
|
||||
export const maxTime: number
|
||||
export const millisecondsInMinute: number
|
||||
export const millisecondsInHour: number
|
||||
export const millisecondsInSecond: number
|
||||
export const minTime: number
|
||||
export const minutesInHour: number
|
||||
export const monthsInQuarter: number
|
||||
export const monthsInYear: number
|
||||
export const quartersInYear: number
|
||||
export const secondsInHour: number
|
||||
export const secondsInMinute: number
|
||||
export const secondsInDay: number
|
||||
export const secondsInWeek: number
|
||||
export const secondsInYear: number
|
||||
export const secondsInMonth: number
|
||||
export const secondsInQuarter: number
|
||||
+207
@@ -0,0 +1,207 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.secondsInYear = exports.secondsInWeek = exports.secondsInQuarter = exports.secondsInMonth = exports.secondsInMinute = exports.secondsInHour = exports.secondsInDay = exports.quartersInYear = exports.monthsInYear = exports.monthsInQuarter = exports.minutesInHour = exports.minTime = exports.millisecondsInSecond = exports.millisecondsInMinute = exports.millisecondsInHour = exports.maxTime = exports.daysInYear = exports.daysInWeek = void 0;
|
||||
/**
|
||||
* Days in 1 week.
|
||||
*
|
||||
* @name daysInWeek
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
var daysInWeek = 7;
|
||||
|
||||
/**
|
||||
* Days in 1 year
|
||||
* One years equals 365.2425 days according to the formula:
|
||||
*
|
||||
* > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.
|
||||
* > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days
|
||||
*
|
||||
* @name daysInYear
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.daysInWeek = daysInWeek;
|
||||
var daysInYear = 365.2425;
|
||||
|
||||
/**
|
||||
* Maximum allowed time.
|
||||
*
|
||||
* @name maxTime
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.daysInYear = daysInYear;
|
||||
var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;
|
||||
|
||||
/**
|
||||
* Milliseconds in 1 minute
|
||||
*
|
||||
* @name millisecondsInMinute
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.maxTime = maxTime;
|
||||
var millisecondsInMinute = 60000;
|
||||
|
||||
/**
|
||||
* Milliseconds in 1 hour
|
||||
*
|
||||
* @name millisecondsInHour
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.millisecondsInMinute = millisecondsInMinute;
|
||||
var millisecondsInHour = 3600000;
|
||||
|
||||
/**
|
||||
* Milliseconds in 1 second
|
||||
*
|
||||
* @name millisecondsInSecond
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.millisecondsInHour = millisecondsInHour;
|
||||
var millisecondsInSecond = 1000;
|
||||
|
||||
/**
|
||||
* Minimum allowed time.
|
||||
*
|
||||
* @name minTime
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.millisecondsInSecond = millisecondsInSecond;
|
||||
var minTime = -maxTime;
|
||||
|
||||
/**
|
||||
* Minutes in 1 hour
|
||||
*
|
||||
* @name minutesInHour
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.minTime = minTime;
|
||||
var minutesInHour = 60;
|
||||
|
||||
/**
|
||||
* Months in 1 quarter
|
||||
*
|
||||
* @name monthsInQuarter
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.minutesInHour = minutesInHour;
|
||||
var monthsInQuarter = 3;
|
||||
|
||||
/**
|
||||
* Months in 1 year
|
||||
*
|
||||
* @name monthsInYear
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.monthsInQuarter = monthsInQuarter;
|
||||
var monthsInYear = 12;
|
||||
|
||||
/**
|
||||
* Quarters in 1 year
|
||||
*
|
||||
* @name quartersInYear
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.monthsInYear = monthsInYear;
|
||||
var quartersInYear = 4;
|
||||
|
||||
/**
|
||||
* Seconds in 1 hour
|
||||
*
|
||||
* @name secondsInHour
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.quartersInYear = quartersInYear;
|
||||
var secondsInHour = 3600;
|
||||
|
||||
/**
|
||||
* Seconds in 1 minute
|
||||
*
|
||||
* @name secondsInMinute
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.secondsInHour = secondsInHour;
|
||||
var secondsInMinute = 60;
|
||||
|
||||
/**
|
||||
* Seconds in 1 day
|
||||
*
|
||||
* @name secondsInDay
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.secondsInMinute = secondsInMinute;
|
||||
var secondsInDay = secondsInHour * 24;
|
||||
|
||||
/**
|
||||
* Seconds in 1 week
|
||||
*
|
||||
* @name secondsInWeek
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.secondsInDay = secondsInDay;
|
||||
var secondsInWeek = secondsInDay * 7;
|
||||
|
||||
/**
|
||||
* Seconds in 1 year
|
||||
*
|
||||
* @name secondsInYear
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.secondsInWeek = secondsInWeek;
|
||||
var secondsInYear = secondsInDay * daysInYear;
|
||||
|
||||
/**
|
||||
* Seconds in 1 month
|
||||
*
|
||||
* @name secondsInMonth
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.secondsInYear = secondsInYear;
|
||||
var secondsInMonth = secondsInYear / 12;
|
||||
|
||||
/**
|
||||
* Seconds in 1 quarter
|
||||
*
|
||||
* @name secondsInQuarter
|
||||
* @constant
|
||||
* @type {number}
|
||||
* @default
|
||||
*/
|
||||
exports.secondsInMonth = secondsInMonth;
|
||||
var secondsInQuarter = secondsInMonth * 3;
|
||||
exports.secondsInQuarter = secondsInQuarter;
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// @flow
|
||||
|
||||
declare export var daysInWeek: number
|
||||
declare export var maxTime: number
|
||||
declare export var millisecondsInMinute: number
|
||||
declare export var millisecondsInHour: number
|
||||
declare export var millisecondsInSecond: number
|
||||
declare export var minTime: number
|
||||
declare export var minutesInHour: number
|
||||
declare export var monthsInQuarter: number
|
||||
declare export var monthsInYear: number
|
||||
declare export var quartersInYear: number
|
||||
declare export var secondsInHour: number
|
||||
declare export var secondsInMinute: number
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { daysToWeeks } from 'date-fns'
|
||||
export default daysToWeeks
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = daysToWeeks;
|
||||
var _index = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
var _index2 = require("../constants/index.js");
|
||||
/**
|
||||
* @name daysToWeeks
|
||||
* @category Conversion Helpers
|
||||
* @summary Convert days to weeks.
|
||||
*
|
||||
* @description
|
||||
* Convert a number of days to a full number of weeks.
|
||||
*
|
||||
* @param {number} days - number of days to be converted
|
||||
*
|
||||
* @returns {number} the number of days converted in weeks
|
||||
* @throws {TypeError} 1 argument required
|
||||
*
|
||||
* @example
|
||||
* // Convert 14 days to weeks:
|
||||
* const result = daysToWeeks(14)
|
||||
* //=> 2
|
||||
*
|
||||
* @example
|
||||
* // It uses floor rounding:
|
||||
* const result = daysToWeeks(13)
|
||||
* //=> 1
|
||||
*/
|
||||
function daysToWeeks(days) {
|
||||
(0, _index.default)(1, arguments);
|
||||
var weeks = days / _index2.daysInWeek;
|
||||
return Math.floor(weeks);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (days: number) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/daysToWeeks/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInBusinessDays } from 'date-fns'
|
||||
export default differenceInBusinessDays
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInBusinessDays;
|
||||
var _index = _interopRequireDefault(require("../addDays/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../differenceInCalendarDays/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../isSameDay/index.js"));
|
||||
var _index4 = _interopRequireDefault(require("../isValid/index.js"));
|
||||
var _index5 = _interopRequireDefault(require("../isWeekend/index.js"));
|
||||
var _index6 = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index7 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
var _index8 = _interopRequireDefault(require("../_lib/toInteger/index.js"));
|
||||
/**
|
||||
* @name differenceInBusinessDays
|
||||
* @category Day Helpers
|
||||
* @summary Get the number of business days between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of business day periods between the given dates.
|
||||
* Business days being days that arent in the weekend.
|
||||
* Like `differenceInCalendarDays`, the function removes the times from
|
||||
* the dates before calculating the difference.
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @returns {Number} the number of business days
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many business days are between
|
||||
* // 10 January 2014 and 20 July 2014?
|
||||
* const result = differenceInBusinessDays(
|
||||
* new Date(2014, 6, 20),
|
||||
* new Date(2014, 0, 10)
|
||||
* )
|
||||
* //=> 136
|
||||
*
|
||||
* // How many business days are between
|
||||
* // 30 November 2021 and 1 November 2021?
|
||||
* const result = differenceInBusinessDays(
|
||||
* new Date(2021, 10, 30),
|
||||
* new Date(2021, 10, 1)
|
||||
* )
|
||||
* //=> 21
|
||||
*
|
||||
* // How many business days are between
|
||||
* // 1 November 2021 and 1 December 2021?
|
||||
* const result = differenceInBusinessDays(
|
||||
* new Date(2021, 10, 1),
|
||||
* new Date(2021, 11, 1)
|
||||
* )
|
||||
* //=> -22
|
||||
*
|
||||
* // How many business days are between
|
||||
* // 1 November 2021 and 1 November 2021 ?
|
||||
* const result = differenceInBusinessDays(
|
||||
* new Date(2021, 10, 1),
|
||||
* new Date(2021, 10, 1)
|
||||
* )
|
||||
* //=> 0
|
||||
*/
|
||||
function differenceInBusinessDays(dirtyDateLeft, dirtyDateRight) {
|
||||
(0, _index7.default)(2, arguments);
|
||||
var dateLeft = (0, _index6.default)(dirtyDateLeft);
|
||||
var dateRight = (0, _index6.default)(dirtyDateRight);
|
||||
if (!(0, _index4.default)(dateLeft) || !(0, _index4.default)(dateRight)) return NaN;
|
||||
var calendarDifference = (0, _index2.default)(dateLeft, dateRight);
|
||||
var sign = calendarDifference < 0 ? -1 : 1;
|
||||
var weeks = (0, _index8.default)(calendarDifference / 7);
|
||||
var result = weeks * 5;
|
||||
dateRight = (0, _index.default)(dateRight, weeks * 7);
|
||||
|
||||
// the loop below will run at most 6 times to account for the remaining days that don't makeup a full week
|
||||
while (!(0, _index3.default)(dateLeft, dateRight)) {
|
||||
// sign is used to account for both negative and positive differences
|
||||
result += (0, _index5.default)(dateRight) ? 0 : sign;
|
||||
dateRight = (0, _index.default)(dateRight, sign);
|
||||
}
|
||||
return result === 0 ? 0 : result;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInBusinessDays/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInCalendarDays } from 'date-fns'
|
||||
export default differenceInCalendarDays
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInCalendarDays;
|
||||
var _index = _interopRequireDefault(require("../_lib/getTimezoneOffsetInMilliseconds/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../startOfDay/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
var MILLISECONDS_IN_DAY = 86400000;
|
||||
|
||||
/**
|
||||
* @name differenceInCalendarDays
|
||||
* @category Day Helpers
|
||||
* @summary Get the number of calendar days between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of calendar days between the given dates. This means that the times are removed
|
||||
* from the dates and then the difference in days is calculated.
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @returns {Number} the number of calendar days
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many calendar days are between
|
||||
* // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?
|
||||
* const result = differenceInCalendarDays(
|
||||
* new Date(2012, 6, 2, 0, 0),
|
||||
* new Date(2011, 6, 2, 23, 0)
|
||||
* )
|
||||
* //=> 366
|
||||
* // How many calendar days are between
|
||||
* // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?
|
||||
* const result = differenceInCalendarDays(
|
||||
* new Date(2011, 6, 3, 0, 1),
|
||||
* new Date(2011, 6, 2, 23, 59)
|
||||
* )
|
||||
* //=> 1
|
||||
*/
|
||||
function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var startOfDayLeft = (0, _index2.default)(dirtyDateLeft);
|
||||
var startOfDayRight = (0, _index2.default)(dirtyDateRight);
|
||||
var timestampLeft = startOfDayLeft.getTime() - (0, _index.default)(startOfDayLeft);
|
||||
var timestampRight = startOfDayRight.getTime() - (0, _index.default)(startOfDayRight);
|
||||
|
||||
// Round the number of days to the nearest integer
|
||||
// because the number of milliseconds in a day is not constant
|
||||
// (e.g. it's different in the day of the daylight saving time clock shift)
|
||||
return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInCalendarDays/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInCalendarISOWeekYears } from 'date-fns'
|
||||
export default differenceInCalendarISOWeekYears
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInCalendarISOWeekYears;
|
||||
var _index = _interopRequireDefault(require("../getISOWeekYear/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name differenceInCalendarISOWeekYears
|
||||
* @category ISO Week-Numbering Year Helpers
|
||||
* @summary Get the number of calendar ISO week-numbering years between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of calendar ISO week-numbering years between the given dates.
|
||||
*
|
||||
* ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @returns {Number} the number of calendar ISO week-numbering years
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?
|
||||
* const result = differenceInCalendarISOWeekYears(
|
||||
* new Date(2012, 0, 1),
|
||||
* new Date(2010, 0, 1)
|
||||
* )
|
||||
* //=> 2
|
||||
*/
|
||||
function differenceInCalendarISOWeekYears(dirtyDateLeft, dirtyDateRight) {
|
||||
(0, _index2.default)(2, arguments);
|
||||
return (0, _index.default)(dirtyDateLeft) - (0, _index.default)(dirtyDateRight);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInCalendarISOWeekYears/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInCalendarISOWeeks } from 'date-fns'
|
||||
export default differenceInCalendarISOWeeks
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInCalendarISOWeeks;
|
||||
var _index = _interopRequireDefault(require("../_lib/getTimezoneOffsetInMilliseconds/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../startOfISOWeek/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
var MILLISECONDS_IN_WEEK = 604800000;
|
||||
|
||||
/**
|
||||
* @name differenceInCalendarISOWeeks
|
||||
* @category ISO Week Helpers
|
||||
* @summary Get the number of calendar ISO weeks between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of calendar ISO weeks between the given dates.
|
||||
*
|
||||
* ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @returns {Number} the number of calendar ISO weeks
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?
|
||||
* const result = differenceInCalendarISOWeeks(
|
||||
* new Date(2014, 6, 21),
|
||||
* new Date(2014, 6, 6)
|
||||
* )
|
||||
* //=> 3
|
||||
*/
|
||||
function differenceInCalendarISOWeeks(dirtyDateLeft, dirtyDateRight) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var startOfISOWeekLeft = (0, _index2.default)(dirtyDateLeft);
|
||||
var startOfISOWeekRight = (0, _index2.default)(dirtyDateRight);
|
||||
var timestampLeft = startOfISOWeekLeft.getTime() - (0, _index.default)(startOfISOWeekLeft);
|
||||
var timestampRight = startOfISOWeekRight.getTime() - (0, _index.default)(startOfISOWeekRight);
|
||||
|
||||
// Round the number of days to the nearest integer
|
||||
// because the number of milliseconds in a week is not constant
|
||||
// (e.g. it's different in the week of the daylight saving time clock shift)
|
||||
return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInCalendarISOWeeks/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInCalendarMonths } from 'date-fns'
|
||||
export default differenceInCalendarMonths
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInCalendarMonths;
|
||||
var _index = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name differenceInCalendarMonths
|
||||
* @category Month Helpers
|
||||
* @summary Get the number of calendar months between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of calendar months between the given dates.
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @returns {Number} the number of calendar months
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many calendar months are between 31 January 2014 and 1 September 2014?
|
||||
* const result = differenceInCalendarMonths(
|
||||
* new Date(2014, 8, 1),
|
||||
* new Date(2014, 0, 31)
|
||||
* )
|
||||
* //=> 8
|
||||
*/
|
||||
function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {
|
||||
(0, _index2.default)(2, arguments);
|
||||
var dateLeft = (0, _index.default)(dirtyDateLeft);
|
||||
var dateRight = (0, _index.default)(dirtyDateRight);
|
||||
var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();
|
||||
var monthDiff = dateLeft.getMonth() - dateRight.getMonth();
|
||||
return yearDiff * 12 + monthDiff;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInCalendarMonths/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInCalendarQuarters } from 'date-fns'
|
||||
export default differenceInCalendarQuarters
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInCalendarQuarters;
|
||||
var _index = _interopRequireDefault(require("../getQuarter/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name differenceInCalendarQuarters
|
||||
* @category Quarter Helpers
|
||||
* @summary Get the number of calendar quarters between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of calendar quarters between the given dates.
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @returns {Number} the number of calendar quarters
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many calendar quarters are between 31 December 2013 and 2 July 2014?
|
||||
* const result = differenceInCalendarQuarters(
|
||||
* new Date(2014, 6, 2),
|
||||
* new Date(2013, 11, 31)
|
||||
* )
|
||||
* //=> 3
|
||||
*/
|
||||
function differenceInCalendarQuarters(dirtyDateLeft, dirtyDateRight) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var dateLeft = (0, _index2.default)(dirtyDateLeft);
|
||||
var dateRight = (0, _index2.default)(dirtyDateRight);
|
||||
var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();
|
||||
var quarterDiff = (0, _index.default)(dateLeft) - (0, _index.default)(dateRight);
|
||||
return yearDiff * 4 + quarterDiff;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInCalendarQuarters/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInCalendarWeeks } from 'date-fns'
|
||||
export default differenceInCalendarWeeks
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInCalendarWeeks;
|
||||
var _index = _interopRequireDefault(require("../startOfWeek/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../_lib/getTimezoneOffsetInMilliseconds/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
var MILLISECONDS_IN_WEEK = 604800000;
|
||||
|
||||
/**
|
||||
* @name differenceInCalendarWeeks
|
||||
* @category Week Helpers
|
||||
* @summary Get the number of calendar weeks between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of calendar weeks between the given dates.
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @param {Object} [options] - an object with options.
|
||||
* @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
|
||||
* @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
|
||||
* @returns {Number} the number of calendar weeks
|
||||
* @throws {TypeError} 2 arguments required
|
||||
* @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
|
||||
*
|
||||
* @example
|
||||
* // How many calendar weeks are between 5 July 2014 and 20 July 2014?
|
||||
* const result = differenceInCalendarWeeks(
|
||||
* new Date(2014, 6, 20),
|
||||
* new Date(2014, 6, 5)
|
||||
* )
|
||||
* //=> 3
|
||||
*
|
||||
* @example
|
||||
* // If the week starts on Monday,
|
||||
* // how many calendar weeks are between 5 July 2014 and 20 July 2014?
|
||||
* const result = differenceInCalendarWeeks(
|
||||
* new Date(2014, 6, 20),
|
||||
* new Date(2014, 6, 5),
|
||||
* { weekStartsOn: 1 }
|
||||
* )
|
||||
* //=> 2
|
||||
*/
|
||||
function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, options) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var startOfWeekLeft = (0, _index.default)(dirtyDateLeft, options);
|
||||
var startOfWeekRight = (0, _index.default)(dirtyDateRight, options);
|
||||
var timestampLeft = startOfWeekLeft.getTime() - (0, _index2.default)(startOfWeekLeft);
|
||||
var timestampRight = startOfWeekRight.getTime() - (0, _index2.default)(startOfWeekRight);
|
||||
|
||||
// Round the number of days to the nearest integer
|
||||
// because the number of milliseconds in a week is not constant
|
||||
// (e.g. it's different in the week of the daylight saving time clock shift)
|
||||
return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number,
|
||||
options?: {
|
||||
locale?: Locale,
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
}
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInCalendarWeeks/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInCalendarYears } from 'date-fns'
|
||||
export default differenceInCalendarYears
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInCalendarYears;
|
||||
var _index = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name differenceInCalendarYears
|
||||
* @category Year Helpers
|
||||
* @summary Get the number of calendar years between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of calendar years between the given dates.
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @returns {Number} the number of calendar years
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many calendar years are between 31 December 2013 and 11 February 2015?
|
||||
* const result = differenceInCalendarYears(
|
||||
* new Date(2015, 1, 11),
|
||||
* new Date(2013, 11, 31)
|
||||
* )
|
||||
* //=> 2
|
||||
*/
|
||||
function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {
|
||||
(0, _index2.default)(2, arguments);
|
||||
var dateLeft = (0, _index.default)(dirtyDateLeft);
|
||||
var dateRight = (0, _index.default)(dirtyDateRight);
|
||||
return dateLeft.getFullYear() - dateRight.getFullYear();
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInCalendarYears/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInDays } from 'date-fns'
|
||||
export default differenceInDays
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInDays;
|
||||
var _index = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../differenceInCalendarDays/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
// Like `compareAsc` but uses local time not UTC, which is needed
|
||||
// for accurate equality comparisons of UTC timestamps that end up
|
||||
// having the same representation in local time, e.g. one hour before
|
||||
// DST ends vs. the instant that DST ends.
|
||||
function compareLocalAsc(dateLeft, dateRight) {
|
||||
var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();
|
||||
if (diff < 0) {
|
||||
return -1;
|
||||
} else if (diff > 0) {
|
||||
return 1;
|
||||
// Return 0 if diff is 0; return NaN if diff is NaN
|
||||
} else {
|
||||
return diff;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @name differenceInDays
|
||||
* @category Day Helpers
|
||||
* @summary Get the number of full days between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of full day periods between two dates. Fractional days are
|
||||
* truncated towards zero.
|
||||
*
|
||||
* One "full day" is the distance between a local time in one day to the same
|
||||
* local time on the next or previous day. A full day can sometimes be less than
|
||||
* or more than 24 hours if a daylight savings change happens between two dates.
|
||||
*
|
||||
* To ignore DST and only measure exact 24-hour periods, use this instead:
|
||||
* `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.
|
||||
*
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @returns {Number} the number of full days according to the local timezone
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many full days are between
|
||||
* // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?
|
||||
* const result = differenceInDays(
|
||||
* new Date(2012, 6, 2, 0, 0),
|
||||
* new Date(2011, 6, 2, 23, 0)
|
||||
* )
|
||||
* //=> 365
|
||||
* // How many full days are between
|
||||
* // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?
|
||||
* const result = differenceInDays(
|
||||
* new Date(2011, 6, 3, 0, 1),
|
||||
* new Date(2011, 6, 2, 23, 59)
|
||||
* )
|
||||
* //=> 0
|
||||
* // How many full days are between
|
||||
* // 1 March 2020 0:00 and 1 June 2020 0:00 ?
|
||||
* // Note: because local time is used, the
|
||||
* // result will always be 92 days, even in
|
||||
* // time zones where DST starts and the
|
||||
* // period has only 92*24-1 hours.
|
||||
* const result = differenceInDays(
|
||||
* new Date(2020, 5, 1),
|
||||
* new Date(2020, 2, 1)
|
||||
* )
|
||||
//=> 92
|
||||
*/
|
||||
function differenceInDays(dirtyDateLeft, dirtyDateRight) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var dateLeft = (0, _index.default)(dirtyDateLeft);
|
||||
var dateRight = (0, _index.default)(dirtyDateRight);
|
||||
var sign = compareLocalAsc(dateLeft, dateRight);
|
||||
var difference = Math.abs((0, _index2.default)(dateLeft, dateRight));
|
||||
dateLeft.setDate(dateLeft.getDate() - sign * difference);
|
||||
|
||||
// Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full
|
||||
// If so, result must be decreased by 1 in absolute value
|
||||
var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);
|
||||
var result = sign * (difference - isLastDayNotFull);
|
||||
// Prevent negative zero
|
||||
return result === 0 ? 0 : result;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInDays/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInHours } from 'date-fns'
|
||||
export default differenceInHours
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInHours;
|
||||
var _index = require("../constants/index.js");
|
||||
var _index2 = _interopRequireDefault(require("../differenceInMilliseconds/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
var _index4 = require("../_lib/roundingMethods/index.js");
|
||||
/**
|
||||
* @name differenceInHours
|
||||
* @category Hour Helpers
|
||||
* @summary Get the number of hours between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of hours between the given dates.
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @param {Object} [options] - an object with options.
|
||||
* @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)
|
||||
* @returns {Number} the number of hours
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?
|
||||
* const result = differenceInHours(
|
||||
* new Date(2014, 6, 2, 19, 0),
|
||||
* new Date(2014, 6, 2, 6, 50)
|
||||
* )
|
||||
* //=> 12
|
||||
*/
|
||||
function differenceInHours(dateLeft, dateRight, options) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var diff = (0, _index2.default)(dateLeft, dateRight) / _index.millisecondsInHour;
|
||||
return (0, _index4.getRoundingMethod)(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number,
|
||||
options?: {
|
||||
roundingMethod?: string,
|
||||
}
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInHours/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInISOWeekYears } from 'date-fns'
|
||||
export default differenceInISOWeekYears
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInISOWeekYears;
|
||||
var _index = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../differenceInCalendarISOWeekYears/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../compareAsc/index.js"));
|
||||
var _index4 = _interopRequireDefault(require("../subISOWeekYears/index.js"));
|
||||
var _index5 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name differenceInISOWeekYears
|
||||
* @category ISO Week-Numbering Year Helpers
|
||||
* @summary Get the number of full ISO week-numbering years between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of full ISO week-numbering years between the given dates.
|
||||
*
|
||||
* ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @returns {Number} the number of full ISO week-numbering years
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?
|
||||
* const result = differenceInISOWeekYears(
|
||||
* new Date(2012, 0, 1),
|
||||
* new Date(2010, 0, 1)
|
||||
* )
|
||||
* //=> 1
|
||||
*/
|
||||
function differenceInISOWeekYears(dirtyDateLeft, dirtyDateRight) {
|
||||
(0, _index5.default)(2, arguments);
|
||||
var dateLeft = (0, _index.default)(dirtyDateLeft);
|
||||
var dateRight = (0, _index.default)(dirtyDateRight);
|
||||
var sign = (0, _index3.default)(dateLeft, dateRight);
|
||||
var difference = Math.abs((0, _index2.default)(dateLeft, dateRight));
|
||||
dateLeft = (0, _index4.default)(dateLeft, sign * difference);
|
||||
|
||||
// Math.abs(diff in full ISO years - diff in calendar ISO years) === 1
|
||||
// if last calendar ISO year is not full
|
||||
// If so, result must be decreased by 1 in absolute value
|
||||
var isLastISOWeekYearNotFull = Number((0, _index3.default)(dateLeft, dateRight) === -sign);
|
||||
var result = sign * (difference - isLastISOWeekYearNotFull);
|
||||
// Prevent negative zero
|
||||
return result === 0 ? 0 : result;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInISOWeekYears/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInMilliseconds } from 'date-fns'
|
||||
export default differenceInMilliseconds
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInMilliseconds;
|
||||
var _index = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name differenceInMilliseconds
|
||||
* @category Millisecond Helpers
|
||||
* @summary Get the number of milliseconds between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of milliseconds between the given dates.
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @returns {Number} the number of milliseconds
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many milliseconds are between
|
||||
* // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?
|
||||
* const result = differenceInMilliseconds(
|
||||
* new Date(2014, 6, 2, 12, 30, 21, 700),
|
||||
* new Date(2014, 6, 2, 12, 30, 20, 600)
|
||||
* )
|
||||
* //=> 1100
|
||||
*/
|
||||
function differenceInMilliseconds(dateLeft, dateRight) {
|
||||
(0, _index2.default)(2, arguments);
|
||||
return (0, _index.default)(dateLeft).getTime() - (0, _index.default)(dateRight).getTime();
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInMilliseconds/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInMinutes } from 'date-fns'
|
||||
export default differenceInMinutes
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInMinutes;
|
||||
var _index = require("../constants/index.js");
|
||||
var _index2 = _interopRequireDefault(require("../differenceInMilliseconds/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
var _index4 = require("../_lib/roundingMethods/index.js");
|
||||
/**
|
||||
* @name differenceInMinutes
|
||||
* @category Minute Helpers
|
||||
* @summary Get the number of minutes between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the signed number of full (rounded towards 0) minutes between the given dates.
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @param {Object} [options] - an object with options.
|
||||
* @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)
|
||||
* @returns {Number} the number of minutes
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?
|
||||
* const result = differenceInMinutes(
|
||||
* new Date(2014, 6, 2, 12, 20, 0),
|
||||
* new Date(2014, 6, 2, 12, 7, 59)
|
||||
* )
|
||||
* //=> 12
|
||||
*
|
||||
* @example
|
||||
* // How many minutes are between 10:01:59 and 10:00:00
|
||||
* const result = differenceInMinutes(
|
||||
* new Date(2000, 0, 1, 10, 0, 0),
|
||||
* new Date(2000, 0, 1, 10, 1, 59)
|
||||
* )
|
||||
* //=> -1
|
||||
*/
|
||||
function differenceInMinutes(dateLeft, dateRight, options) {
|
||||
(0, _index3.default)(2, arguments);
|
||||
var diff = (0, _index2.default)(dateLeft, dateRight) / _index.millisecondsInMinute;
|
||||
return (0, _index4.getRoundingMethod)(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number,
|
||||
options?: {
|
||||
roundingMethod?: string,
|
||||
}
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInMinutes/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInMonths } from 'date-fns'
|
||||
export default differenceInMonths
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInMonths;
|
||||
var _index = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../differenceInCalendarMonths/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../compareAsc/index.js"));
|
||||
var _index4 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
var _index5 = _interopRequireDefault(require("../isLastDayOfMonth/index.js"));
|
||||
/**
|
||||
* @name differenceInMonths
|
||||
* @category Month Helpers
|
||||
* @summary Get the number of full months between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of full months between the given dates using trunc as a default rounding method.
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @returns {Number} the number of full months
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many full months are between 31 January 2014 and 1 September 2014?
|
||||
* const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))
|
||||
* //=> 7
|
||||
*/
|
||||
function differenceInMonths(dirtyDateLeft, dirtyDateRight) {
|
||||
(0, _index4.default)(2, arguments);
|
||||
var dateLeft = (0, _index.default)(dirtyDateLeft);
|
||||
var dateRight = (0, _index.default)(dirtyDateRight);
|
||||
var sign = (0, _index3.default)(dateLeft, dateRight);
|
||||
var difference = Math.abs((0, _index2.default)(dateLeft, dateRight));
|
||||
var result;
|
||||
|
||||
// Check for the difference of less than month
|
||||
if (difference < 1) {
|
||||
result = 0;
|
||||
} else {
|
||||
if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {
|
||||
// This will check if the date is end of Feb and assign a higher end of month date
|
||||
// to compare it with Jan
|
||||
dateLeft.setDate(30);
|
||||
}
|
||||
dateLeft.setMonth(dateLeft.getMonth() - sign * difference);
|
||||
|
||||
// Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full
|
||||
// If so, result must be decreased by 1 in absolute value
|
||||
var isLastMonthNotFull = (0, _index3.default)(dateLeft, dateRight) === -sign;
|
||||
|
||||
// Check for cases of one full calendar month
|
||||
if ((0, _index5.default)((0, _index.default)(dirtyDateLeft)) && difference === 1 && (0, _index3.default)(dirtyDateLeft, dateRight) === 1) {
|
||||
isLastMonthNotFull = false;
|
||||
}
|
||||
result = sign * (difference - Number(isLastMonthNotFull));
|
||||
}
|
||||
|
||||
// Prevent negative zero
|
||||
return result === 0 ? 0 : result;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInMonths/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInQuarters } from 'date-fns'
|
||||
export default differenceInQuarters
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInQuarters;
|
||||
var _index = _interopRequireDefault(require("../differenceInMonths/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
var _index3 = require("../_lib/roundingMethods/index.js");
|
||||
/**
|
||||
* @name differenceInQuarters
|
||||
* @category Quarter Helpers
|
||||
* @summary Get the number of quarters between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of quarters between the given dates.
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @param {Object} [options] - an object with options.
|
||||
* @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)
|
||||
* @returns {Number} the number of full quarters
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many full quarters are between 31 December 2013 and 2 July 2014?
|
||||
* const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))
|
||||
* //=> 2
|
||||
*/
|
||||
function differenceInQuarters(dateLeft, dateRight, options) {
|
||||
(0, _index2.default)(2, arguments);
|
||||
var diff = (0, _index.default)(dateLeft, dateRight) / 3;
|
||||
return (0, _index3.getRoundingMethod)(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number,
|
||||
options?: {
|
||||
roundingMethod?: string,
|
||||
}
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInQuarters/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInSeconds } from 'date-fns'
|
||||
export default differenceInSeconds
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInSeconds;
|
||||
var _index = _interopRequireDefault(require("../differenceInMilliseconds/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
var _index3 = require("../_lib/roundingMethods/index.js");
|
||||
/**
|
||||
* @name differenceInSeconds
|
||||
* @category Second Helpers
|
||||
* @summary Get the number of seconds between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of seconds between the given dates.
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @param {Object} [options] - an object with options.
|
||||
* @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)
|
||||
* @returns {Number} the number of seconds
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many seconds are between
|
||||
* // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?
|
||||
* const result = differenceInSeconds(
|
||||
* new Date(2014, 6, 2, 12, 30, 20, 0),
|
||||
* new Date(2014, 6, 2, 12, 30, 7, 999)
|
||||
* )
|
||||
* //=> 12
|
||||
*/
|
||||
function differenceInSeconds(dateLeft, dateRight, options) {
|
||||
(0, _index2.default)(2, arguments);
|
||||
var diff = (0, _index.default)(dateLeft, dateRight) / 1000;
|
||||
return (0, _index3.getRoundingMethod)(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number,
|
||||
options?: {
|
||||
roundingMethod?: string,
|
||||
}
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInSeconds/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInWeeks } from 'date-fns'
|
||||
export default differenceInWeeks
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInWeeks;
|
||||
var _index = _interopRequireDefault(require("../differenceInDays/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
var _index3 = require("../_lib/roundingMethods/index.js");
|
||||
/**
|
||||
* @name differenceInWeeks
|
||||
* @category Week Helpers
|
||||
* @summary Get the number of full weeks between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of full weeks between two dates. Fractional weeks are
|
||||
* truncated towards zero by default.
|
||||
*
|
||||
* One "full week" is the distance between a local time in one day to the same
|
||||
* local time 7 days earlier or later. A full week can sometimes be less than
|
||||
* or more than 7*24 hours if a daylight savings change happens between two dates.
|
||||
*
|
||||
* To ignore DST and only measure exact 7*24-hour periods, use this instead:
|
||||
* `Math.floor(differenceInHours(dateLeft, dateRight)/(7*24))|0`.
|
||||
*
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @param {Object} [options] - an object with options.
|
||||
* @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)
|
||||
* @returns {Number} the number of full weeks
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many full weeks are between 5 July 2014 and 20 July 2014?
|
||||
* const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))
|
||||
* //=> 2
|
||||
*
|
||||
* // How many full weeks are between
|
||||
* // 1 March 2020 0:00 and 6 June 2020 0:00 ?
|
||||
* // Note: because local time is used, the
|
||||
* // result will always be 8 weeks (54 days),
|
||||
* // even if DST starts and the period has
|
||||
* // only 54*24-1 hours.
|
||||
* const result = differenceInWeeks(
|
||||
* new Date(2020, 5, 1),
|
||||
* new Date(2020, 2, 6)
|
||||
* )
|
||||
* //=> 8
|
||||
*/
|
||||
function differenceInWeeks(dateLeft, dateRight, options) {
|
||||
(0, _index2.default)(2, arguments);
|
||||
var diff = (0, _index.default)(dateLeft, dateRight) / 7;
|
||||
return (0, _index3.getRoundingMethod)(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number,
|
||||
options?: {
|
||||
roundingMethod?: string,
|
||||
}
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInWeeks/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
import { differenceInYears } from 'date-fns'
|
||||
export default differenceInYears
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = differenceInYears;
|
||||
var _index = _interopRequireDefault(require("../toDate/index.js"));
|
||||
var _index2 = _interopRequireDefault(require("../differenceInCalendarYears/index.js"));
|
||||
var _index3 = _interopRequireDefault(require("../compareAsc/index.js"));
|
||||
var _index4 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
||||
/**
|
||||
* @name differenceInYears
|
||||
* @category Year Helpers
|
||||
* @summary Get the number of full years between the given dates.
|
||||
*
|
||||
* @description
|
||||
* Get the number of full years between the given dates.
|
||||
*
|
||||
* @param {Date|Number} dateLeft - the later date
|
||||
* @param {Date|Number} dateRight - the earlier date
|
||||
* @returns {Number} the number of full years
|
||||
* @throws {TypeError} 2 arguments required
|
||||
*
|
||||
* @example
|
||||
* // How many full years are between 31 December 2013 and 11 February 2015?
|
||||
* const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))
|
||||
* //=> 1
|
||||
*/
|
||||
function differenceInYears(dirtyDateLeft, dirtyDateRight) {
|
||||
(0, _index4.default)(2, arguments);
|
||||
var dateLeft = (0, _index.default)(dirtyDateLeft);
|
||||
var dateRight = (0, _index.default)(dirtyDateRight);
|
||||
var sign = (0, _index3.default)(dateLeft, dateRight);
|
||||
var difference = Math.abs((0, _index2.default)(dateLeft, dateRight));
|
||||
|
||||
// Set both dates to a valid leap year for accurate comparison when dealing
|
||||
// with leap days
|
||||
dateLeft.setFullYear(1584);
|
||||
dateRight.setFullYear(1584);
|
||||
|
||||
// Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full
|
||||
// If so, result must be decreased by 1 in absolute value
|
||||
var isLastYearNotFull = (0, _index3.default)(dateLeft, dateRight) === -sign;
|
||||
var result = sign * (difference - Number(isLastYearNotFull));
|
||||
// Prevent negative zero
|
||||
return result === 0 ? 0 : result;
|
||||
}
|
||||
module.exports = exports.default;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// @flow
|
||||
// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
|
||||
|
||||
export type Interval = {
|
||||
start: Date | number,
|
||||
end: Date | number,
|
||||
}
|
||||
|
||||
export type Locale = {
|
||||
code?: string,
|
||||
formatDistance?: (...args: Array<any>) => any,
|
||||
formatRelative?: (...args: Array<any>) => any,
|
||||
localize?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
formatLong?: {
|
||||
date: (...args: Array<any>) => any,
|
||||
time: (...args: Array<any>) => any,
|
||||
dateTime: (...args: Array<any>) => any,
|
||||
},
|
||||
match?: {
|
||||
ordinalNumber: (...args: Array<any>) => any,
|
||||
era: (...args: Array<any>) => any,
|
||||
quarter: (...args: Array<any>) => any,
|
||||
month: (...args: Array<any>) => any,
|
||||
day: (...args: Array<any>) => any,
|
||||
dayPeriod: (...args: Array<any>) => any,
|
||||
},
|
||||
options?: {
|
||||
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
||||
firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
|
||||
},
|
||||
}
|
||||
|
||||
export type Duration = {
|
||||
years?: number,
|
||||
months?: number,
|
||||
weeks?: number,
|
||||
days?: number,
|
||||
hours?: number,
|
||||
minutes?: number,
|
||||
seconds?: number,
|
||||
}
|
||||
|
||||
export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
|
||||
declare module.exports: (
|
||||
dateLeft: Date | number,
|
||||
dateRight: Date | number
|
||||
) => number
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"sideEffects": false,
|
||||
"module": "../esm/differenceInYears/index.js",
|
||||
"typings": "../typings.d.ts"
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
module.exports = {
|
||||
rules: {
|
||||
'no-console': 'off'
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* @category Types
|
||||
* @summary Day type
|
||||
*
|
||||
* @description
|
||||
* The day of the week type alias (`0 | 1 | 2 | 3 | 4 | 5 | 6`). Unlike the date
|
||||
* (the number of days since the beginningof the month), which starts with 1
|
||||
* and is dynamic (can go up to 28, 30, or 31), the day starts with 0 and static
|
||||
* (always ends at 6). Look at it as an index in an array where Sunday is
|
||||
* the first element, and Saturday is the last.
|
||||
*
|
||||
* @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6} Day
|
||||
*/
|
||||
const Day = 0
|
||||
module.exports = Day
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
/**
|
||||
* @category Types
|
||||
* @summary Duration object
|
||||
*
|
||||
* @description
|
||||
* Duration object.
|
||||
*
|
||||
* @typedef {Object} Duration
|
||||
*
|
||||
* @property {number} [years]
|
||||
* @property {number} [months]
|
||||
* @property {number} [weeks]
|
||||
* @property {number} [days]
|
||||
* @property {number} [hours]
|
||||
* @property {number} [minutes]
|
||||
* @property {number} [seconds]
|
||||
*/
|
||||
const Duration = {}
|
||||
module.exports = Duration
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* @category Types
|
||||
* @summary An object that combines two dates to represent the time interval.
|
||||
*
|
||||
* @description
|
||||
* An object that combines two dates to represent the time interval.
|
||||
*
|
||||
* @typedef {Object} Interval
|
||||
* @property {Date|Number} start - the start of the interval
|
||||
* @property {Date|Number} end - the end of the interval
|
||||
* @throws {RangeError} The start of an interval cannot be after its end
|
||||
* @throws {RangeError} Date in interval cannot be `Invalid Date`
|
||||
*/
|
||||
var Interval = {}
|
||||
|
||||
module.exports = Interval
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
/**
|
||||
* @category Types
|
||||
* @summary A locale object. Default locale is `en-US`.
|
||||
*
|
||||
* @description
|
||||
* A locale object. Default locale is `en-US`.
|
||||
*
|
||||
* If you're using any of these date-fns, consider specifying a locale in options:
|
||||
*
|
||||
* - `differenceInCalendarWeeks`
|
||||
* - `eachWeekOfInterval`
|
||||
* - `endOfWeek`
|
||||
* - `format`
|
||||
* - `formatDistance`
|
||||
* - `formatDistanceStrict`
|
||||
* - `formatRelative`
|
||||
* - `getWeek`
|
||||
* - `getWeekOfMonth`
|
||||
* - `getWeeksInMonth`
|
||||
* - `getWeekYear`
|
||||
* - `isMatch`
|
||||
* - `isSameWeek`
|
||||
* - `isThisWeek`
|
||||
* - `lastDayOfWeek`
|
||||
* - `parse`
|
||||
* - `setDay`
|
||||
* - `setWeek`
|
||||
* - `setWeekYear`
|
||||
* - `startOfWeek`
|
||||
* - `startOfWeekYear`
|
||||
*
|
||||
* Read the Properties section below for more details.
|
||||
*
|
||||
* @typedef {Object} Locale
|
||||
*
|
||||
* @property {string} [code] - the locale code (ISO 639-1 + optional country code)
|
||||
* @property {Function} [formatDistance] - the function that takes a token
|
||||
* passed by `formatDistance` or `formatDistanceStrict` and payload,
|
||||
* and returns localized distance in words.
|
||||
* Required by `formatDistance` and `formatDistanceStrict`
|
||||
*
|
||||
* @property {Function} [formatRelative] - the function that takes a token
|
||||
* passed by `formatRelative` and two dates and returns the localized relative date format.
|
||||
* Required by `formatRelative`
|
||||
*
|
||||
* @property {Object} [localize] - the object with functions used to localize various values.
|
||||
* Required by `format` and `formatRelative`
|
||||
* @property {Function} localize.ordinalNumber - the function that localizes an ordinal number
|
||||
* @property {Function} localize.era - the function that takes 0 or 1 and returns localized era
|
||||
* @property {Function} localize.quarter - the function that localizes a quarter
|
||||
* @property {Function} localize.month - the function that localizes a month
|
||||
* @property {Function} localize.day - the function that localizes a day of the week
|
||||
* @property {Function} localize.dayPeriod - the function that takes one of the strings
|
||||
* 'am', 'pm', 'midnight', 'noon', 'morning', 'afternoon', 'evening' or 'night'
|
||||
* and returns localized time of the day
|
||||
*
|
||||
* @property {Object} [formatLong] - the object with functions that return localized formats
|
||||
* @property {Function} formatLong.date - the function that returns a localized long date format
|
||||
* @property {Function} formatLong.time - the function that returns a localized long time format
|
||||
* @property {Function} formatLong.dateTime - the function that returns a localized format of date and time combined
|
||||
*
|
||||
* @property {Object} [match] — the object with functions used to match and parse various localized values.
|
||||
* Required by `parse`
|
||||
* @property {Function} match.ordinalNumber - the function that parses a localized ordinal number
|
||||
* @property {Function} match.era - the function that parses a localized era
|
||||
* @property {Function} match.quarter - the function that parses a localized quarter
|
||||
* @property {Function} match.month - the function that parses a localized month
|
||||
* @property {Function} match.day - the function that parses a localized day of the week
|
||||
* @property {Function} match.dayPeriod - the function that parses a localized time of the day
|
||||
*
|
||||
* @property {Object} [options] - an object with locale options.
|
||||
* @property {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday).
|
||||
* Used by `differenceInCalendarWeeks`, `eachWeekOfInterval`, `endOfWeek`, `format`, `formatRelative`, `getWeek`, `getWeekOfMonth`,
|
||||
* `getWeeksInMonth`, `getWeekYear`, `isMatch`, `isSameWeek`, `isThisWeek`, `lastDayOfWeek`, `parse`, `setDay`,
|
||||
* `setWeek`, `setWeekYear`, `startOfWeek` and `startOfWeekYear`
|
||||
* @property {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January,
|
||||
* which is always in the first week of the year.
|
||||
* Used by `format`, `getWeek`, `getWeekYear`, `isMatch`, `parse`, `setWeek`, `setWeekYear` and `startOfWeekYear`.
|
||||
*
|
||||
* @throws {RangeError} `locale` must contain `localize` property. Thrown by `format` and `formatRelative`
|
||||
* @throws {RangeError} `locale` must contain `formatLong` property. Thrown by `format` and `formatRelative`
|
||||
* @throws {RangeError} `locale` must contain `formatRelative` property. Thrown by `formatRelative`
|
||||
* @throws {RangeError} `locale` must contain `formatDistance` property. Thrown by `formatDistance` and `formatDistanceStrict`
|
||||
* @throws {RangeError} `locale` must contain `match` property. Thrown by `parse`
|
||||
*/
|
||||
var Locale = {}
|
||||
|
||||
module.exports = Locale
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
# Constants
|
||||
|
||||
date-fns provides with a number of useful constants.
|
||||
|
||||
## Usage
|
||||
|
||||
The constants could be imported from `date-fns/constants` or directly
|
||||
from `date-fns`:
|
||||
|
||||
```js
|
||||
import { maxTime } from 'date-fns/constants'
|
||||
import { minTime } from 'date-fns'
|
||||
|
||||
function isAllowedTime(time) {
|
||||
return time <= maxTime && time >= minTime
|
||||
}
|
||||
```
|
||||
|
||||
## Constants
|
||||
|
||||
### `maxTime`
|
||||
|
||||
Maximum allowed time:
|
||||
|
||||
```js
|
||||
import { maxTime } from 'date-fns'
|
||||
|
||||
const isValid = 8640000000000001 <= maxTime
|
||||
//=> false
|
||||
|
||||
new Date(8640000000000001)
|
||||
//=> Invalid Date
|
||||
```
|
||||
|
||||
### `minTime`
|
||||
|
||||
Minimum allowed time:
|
||||
|
||||
```js
|
||||
import { minTime } from 'date-fns'
|
||||
|
||||
const isValid = -8640000000000001 >= minTime
|
||||
//=> false
|
||||
|
||||
new Date(-8640000000000001)
|
||||
//=> Invalid Date
|
||||
```
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
# ECMAScript Modules
|
||||
|
||||
**date-fns** v2.x provides support for
|
||||
[ECMAScript Modules](http://www.ecma-international.org/ecma-262/6.0/#sec-modules)
|
||||
that enables tree-shaking for bundlers, like [rollup.js](http://rollupjs.org)
|
||||
and [webpack](https://webpack.js.org).
|
||||
|
||||
If you have tree-shaking enabled in your bundler, just import functions normally:
|
||||
|
||||
```javascript
|
||||
import { format, parse } from 'date-fns'
|
||||
import { enUS, eo } from 'date-fns/locale'
|
||||
import { addDays, addHours } from 'date-fns/fp'
|
||||
```
|
||||
|
||||
In TypeScript, now you can import individual functions in more idiomatic way:
|
||||
|
||||
```typescript
|
||||
// Before
|
||||
import * as format from 'date-fns/format'
|
||||
|
||||
// Now
|
||||
import format from 'date-fns/format'
|
||||
```
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
# FP Guide
|
||||
|
||||
**date-fns** v2.x provides [functional programming](https://en.wikipedia.org/wiki/Functional_programming) (FP)
|
||||
friendly functions, like those in [lodash](https://github.com/lodash/lodash/wiki/FP-Guide),
|
||||
that support [currying](https://en.wikipedia.org/wiki/Currying).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Usage](#usage)
|
||||
|
||||
- [Using Function Composition](#using-function-composition)
|
||||
|
||||
## Usage
|
||||
|
||||
FP functions are provided via `'date-fns/fp'` submodule.
|
||||
|
||||
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 **date-fns'** FP functions, the order of arguments is reversed.
|
||||
|
||||
```javascript
|
||||
import { addYears, formatWithOptions } from 'date-fns/fp'
|
||||
import { eo } from 'date-fns/locale'
|
||||
import toUpper from 'lodash/fp/toUpper' // 'date-fns/fp' is compatible with 'lodash/fp'!
|
||||
|
||||
// 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(addFiveYears).map(dateToString).map(toUpper)
|
||||
//=> ['1 JANUARO 2022', '11 FEBRUARO 2022', '2 JULIO 2022']
|
||||
```
|
||||
|
||||
## Using Function Composition
|
||||
|
||||
The main advantage of FP functions is support of functional-style
|
||||
[function composing](https://medium.com/making-internets/why-using-chain-is-a-mistake-9bc1f80d51ba).
|
||||
|
||||
In the example above, you can compose `addFiveYears`, `dateToString` and `toUpper` into a single function:
|
||||
|
||||
```javascript
|
||||
const formattedDates = dates.map((date) => toUpper(dateToString(addFiveYears(date))))
|
||||
```
|
||||
|
||||
Or you can use `compose` function provided by [lodash](https://lodash.com) to do the same in more idiomatic way:
|
||||
|
||||
```javascript
|
||||
import compose from 'lodash/fp/compose'
|
||||
|
||||
const formattedDates = dates.map(compose(toUpper, dateToString, addFiveYears))
|
||||
```
|
||||
|
||||
Or if you prefer natural direction of composing (as opposed to the computationally correct order),
|
||||
you can use lodash' `flow` instead:
|
||||
|
||||
```javascript
|
||||
import flow from 'lodash/fp/flow'
|
||||
|
||||
const formattedDates = dates.map(flow(addFiveYears, dateToString, toUpper))
|
||||
```
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
# Getting Started
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Introduction](#introduction)
|
||||
|
||||
- [Submodules](#submodules)
|
||||
|
||||
- [Installation](#installation)
|
||||
|
||||
## Introduction
|
||||
|
||||
**date-fns** provides the most comprehensive, yet simple and consistent toolset
|
||||
for manipulating **JavaScript dates** in **a browser** & **Node.js**.
|
||||
|
||||
**date-fns** is like [lodash](https://lodash.com) for dates. It has
|
||||
[**200+ functions** for all occasions](https://date-fns.org/docs/).
|
||||
|
||||
```js
|
||||
import { format, compareAsc } from 'date-fns'
|
||||
|
||||
format(new Date(2014, 1, 11), 'MM/dd/yyyy')
|
||||
//=> '02/11/2014'
|
||||
|
||||
const dates = [
|
||||
new Date(1995, 6, 2),
|
||||
new Date(1987, 1, 11),
|
||||
new Date(1989, 6, 10),
|
||||
]
|
||||
dates.sort(compareAsc)
|
||||
//=> [
|
||||
// Wed Feb 11 1987 00:00:00,
|
||||
// Mon Jul 10 1989 00:00:00,
|
||||
// Sun Jul 02 1995 00:00:00
|
||||
// ]
|
||||
```
|
||||
|
||||
## Submodules
|
||||
|
||||
**date-fns** includes some optional features as submodules in the npm package.
|
||||
Here is the list of them, in order of nesting:
|
||||
|
||||
- FP — functional programming-friendly variations of the functions. See [FP Guide](https://date-fns.org/docs/FP-Guide);
|
||||
|
||||
- UTC (in development) — variations of the functions which calculate dates in UTC±00:00 timezone.
|
||||
|
||||
The later submodules are also included inside the former if you want to use multiple features from the list.
|
||||
|
||||
To use submodule features, [install the npm package](#npm) and then import a function from a submodule:
|
||||
|
||||
```js
|
||||
// The main submodule:
|
||||
import addDays from 'date-fns/addDays'
|
||||
|
||||
// FP variation:
|
||||
import addDays from 'date-fns/fp/addDays'
|
||||
|
||||
// UTC variation:
|
||||
import addDays from 'date-fns/utc/addDays'
|
||||
|
||||
// Both FP and UTC:
|
||||
import addDays from 'date-fns/fp/utc/addDays'
|
||||
|
||||
// With tree-shaking enabled:
|
||||
import { addDays, format } from 'date-fns/fp'
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
The library is available as an [npm package](https://www.npmjs.com/package/date-fns).
|
||||
|
||||
To install the package, run:
|
||||
|
||||
```bash
|
||||
npm install date-fns --save
|
||||
# or
|
||||
yarn add date-fns
|
||||
```
|
||||
|
||||
Start using:
|
||||
|
||||
```js
|
||||
import { formatDistance, subDays } from 'date-fns'
|
||||
|
||||
formatDistance(subDays(new Date(), 3), new Date(), { addSuffix: true })
|
||||
//=> "3 days ago"
|
||||
```
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
# Internationalization
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Usage](#usage)
|
||||
|
||||
- [Adding New Language](#adding-new-language)
|
||||
|
||||
## Usage
|
||||
|
||||
There are just a few functions that support I18n:
|
||||
|
||||
- [`format`](https://date-fns.org/docs/format)
|
||||
- [`formatDistance`](https://date-fns.org/docs/formatDistance)
|
||||
- [`formatDistanceStrict`](https://date-fns.org/docs/formatDistanceStrict)
|
||||
- [`formatRelative`](https://date-fns.org/docs/formatRelative)
|
||||
|
||||
To use a locale, you need to require it and then pass
|
||||
as an option to a function:
|
||||
|
||||
```js
|
||||
import { formatDistance } from 'date-fns'
|
||||
// Require Esperanto locale
|
||||
import { eo } from 'date-fns/locale'
|
||||
|
||||
const result = formatDistance(
|
||||
new Date(2016, 7, 1),
|
||||
new Date(2015, 0, 1),
|
||||
{locale: eo} // Pass the locale as an option
|
||||
)
|
||||
//=> 'pli ol 1 jaro'
|
||||
```
|
||||
|
||||
It might seem complicated to require and pass locales as options,
|
||||
but unlike Moment.js which bloats your build with all the locales
|
||||
by default date-fns forces developer to manually require locales when needed.
|
||||
To make API simple, we encourage you to write tiny wrappers and use those
|
||||
instead of original functions:
|
||||
|
||||
```js
|
||||
// app/_lib/format.js
|
||||
|
||||
import { format } from 'date-fns'
|
||||
import { enGB, eo, ru } from 'date-fns/locale'
|
||||
|
||||
const locales = {enGB, eo, ru}
|
||||
|
||||
// by providing a default string of 'PP' or any of its variants for `formatStr`
|
||||
// it will format dates in whichever way is appropriate to the locale
|
||||
export default function (date, formatStr = 'PP') {
|
||||
return format(date, formatStr, {
|
||||
locale: locales[window.__localeId__] // or global.__localeId__
|
||||
})
|
||||
}
|
||||
|
||||
// Later:
|
||||
|
||||
import format from 'app/_lib/format'
|
||||
|
||||
window.__localeId__ = 'enGB'
|
||||
format(friday13, 'EEEE d')
|
||||
//=> 'Friday 13'
|
||||
|
||||
window.__localeId__ = 'eo'
|
||||
format(friday13, 'EEEE d')
|
||||
//=> 'vendredo 13'
|
||||
|
||||
// If the format string is omitted, it will take the default for the locale.
|
||||
window.__localeId__ = 'enGB'
|
||||
format(friday13)
|
||||
//=> Jul 13, 2019
|
||||
|
||||
window.__localeId__ = 'eo'
|
||||
format(friday13)
|
||||
//=> 2019-jul-13
|
||||
|
||||
```
|
||||
|
||||
## Adding New Language
|
||||
|
||||
At the moment there is no definitive guide, so if you feel brave enough,
|
||||
use this quick guide:
|
||||
|
||||
- First of all, [create an issue](https://github.com/date-fns/date-fns/issues/new?title=XXX%20language%20support)
|
||||
so you won't overlap with others.
|
||||
- A detailed explanation of how to [add a new locale](https://github.com/date-fns/date-fns/blob/master/docs/i18nContributionGuide.md#adding-a-new-locale).
|
||||
- Use [English locale](https://github.com/date-fns/date-fns/tree/master/src/locale/en-US)
|
||||
as the basis and then incrementally adjust the tests and the code.
|
||||
- Directions on [adding a locale with the same language as another locale](https://github.com/date-fns/date-fns/blob/master/docs/i18nContributionGuide.md#creating-a-locale-with-the-same-language-as-another-locale).
|
||||
- If you have questions or need guidance, leave a comment in the issue.
|
||||
|
||||
Thank you for your support!
|
||||
+921
@@ -0,0 +1,921 @@
|
||||
# I18n Contribution Guide
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Adding a new locale](#adding-a-new-locale)
|
||||
|
||||
- [Choosing a directory name for a locale](#choosing-a-directory-name-for-a-locale)
|
||||
|
||||
- [index.js](#index.js)
|
||||
|
||||
- [localize](#localize)
|
||||
|
||||
- [localize.ordinalNumber](#localize.ordinalnumber)
|
||||
|
||||
- [localize.era and using buildLocalizeFn function](#localize.era-and-using-buildlocalizefn-function)
|
||||
|
||||
- [Formatting localizers](#formatting-localizers)
|
||||
|
||||
- [localize.quarter](#localize.quarter)
|
||||
|
||||
- [localize.month](#localize.month)
|
||||
|
||||
- [localize.day](#localize.day)
|
||||
|
||||
- [localize.dayPeriod](#localize.dayperiod)
|
||||
|
||||
- [formatLong](#formatlong)
|
||||
|
||||
- [formatLong.dateFormats](#formatlong.dateformats)
|
||||
|
||||
- [formatLong.timeFormats](#formatlong.timeformats)
|
||||
|
||||
- [formatLong.dateTimeFormats](#formatlong.datetimeformats)
|
||||
|
||||
- [formatRelative](#formatrelative)
|
||||
|
||||
- [match](#match)
|
||||
|
||||
- [formatDistance](#formatdistance)
|
||||
|
||||
- [Tests](#tests)
|
||||
|
||||
- [Creating a locale with the same language as another locale](#creating-a-locale-with-the-same-language-as-another-locale)
|
||||
|
||||
## Adding a new locale
|
||||
|
||||
To add a new locale:
|
||||
|
||||
- [Choose a directory name for it](#choosing-a-directory-name-for-a-locale).
|
||||
|
||||
- Copy the content of an existing locale (e.g. `en-US`) into the newly created directory.
|
||||
|
||||
- Replace the values in the content with yours file-by-file.
|
||||
Use [CLDR data](https://www.unicode.org/cldr/charts/32/summary/root.html)
|
||||
as a point of reference which values to choose.
|
||||
|
||||
All locales contain a number of properties:
|
||||
|
||||
- [`formatDistance`](#formatdistance) — distance localizer function used by `formatDistance` and `formatDistanceStrict`.
|
||||
- [`formatLong`](#formatlong) — contains long date localizer functions used by `format` and `formatRelative`.
|
||||
- [`formatRelative`](#formatrelative) — relative date localizer function used by `formatRelative`.
|
||||
- [`localize`](#localize) — contains functions, which localize the various date values. Required by `format` and `formatRelative`.
|
||||
- [`match`](#match) — contains functions to parse date values. Required by `parse`.
|
||||
- [`options`](#indexjs) — contains the index of the first day of the week for functions such as `startOfWeek`,
|
||||
and the value which determines the first week of the year
|
||||
for functions like `setWeek`.
|
||||
|
||||
### Choosing a directory name for a locale
|
||||
|
||||
Use the four letter code for the directory name (e.g. `en-GB`),
|
||||
|
||||
Use the two/three letter code:
|
||||
|
||||
- if the language code and the country code are the same (e.g. `pt` instead of `pt-PT`).
|
||||
|
||||
- if the language is used in only one country (e.g. `fil` instead of `fil-PH`).
|
||||
|
||||
- if all countries who use the language
|
||||
also use the same regional standards: the first day of the week,
|
||||
the week numbering (see: https://en.wikipedia.org/wiki/Week#Week_numbering),
|
||||
calendar date format (see: https://en.wikipedia.org/wiki/Calendar_date)
|
||||
and date representation (see: https://en.wikipedia.org/wiki/Date_and_time_representation_by_country
|
||||
and: https://en.wikipedia.org/wiki/Date_format_by_country)
|
||||
(e.g. `ca` instead of `ca-ES` and `ca-AD`).
|
||||
|
||||
### index.js
|
||||
|
||||
Locale's `index.js` is where all the properties of the locale are combined in a single file,
|
||||
documented in JSDoc format.
|
||||
|
||||
```javascript
|
||||
import formatDistance from './_lib/formatDistance/index.js'
|
||||
import formatLong from './_lib/formatLong/index.js'
|
||||
import formatRelative from './_lib/formatRelative/index.js'
|
||||
import localize from './_lib/localize/index.js'
|
||||
import match from './_lib/match/index.js'
|
||||
|
||||
/**
|
||||
* @type {Locale}
|
||||
* @category Locales
|
||||
*
|
||||
* // Name of the locale.
|
||||
* // Inside the parentheses - name of the country - if the locale uses the four letter code, e.g. en-US, fr-CA or pt-BR.
|
||||
* @summary English locale (United States).
|
||||
*
|
||||
* // Name of the language (used by https://date-fns.org/ website)
|
||||
* @language English
|
||||
*
|
||||
* // ISO 639-2 code. See the list here:
|
||||
* // https://www.loc.gov/standards/iso639-2/php/code_list.php
|
||||
* // Used by https://date-fns.org/ to detect the list of the countries that uses the language.
|
||||
* @iso-639-2 eng
|
||||
*
|
||||
* // Authors of the locale (including anyone who corrected or fixed the locale)
|
||||
* @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}
|
||||
* @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}
|
||||
*/
|
||||
var locale = {
|
||||
code: 'en',
|
||||
formatDistance: formatDistance,
|
||||
formatLong: formatLong,
|
||||
formatRelative: formatRelative,
|
||||
localize: localize,
|
||||
match: match,
|
||||
options: {
|
||||
// Index of the first day of the week.
|
||||
// Sunday is 0, Monday is 1, Saturday is 6.
|
||||
weekStartsOn: 0,
|
||||
|
||||
// Nth of January which is always in the first week of the year. See:
|
||||
// https://en.wikipedia.org/wiki/Week#Week_numbering
|
||||
// http://www.pjh2.de/datetime/weeknumber/wnd.php?l=en
|
||||
firstWeekContainsDate: 1
|
||||
}
|
||||
}
|
||||
|
||||
export default locale
|
||||
```
|
||||
|
||||
### localize
|
||||
|
||||
Put this object in `_lib/localize/index.js` inside your locale directory.
|
||||
Contains a number of functions for used by `format`:
|
||||
|
||||
```js
|
||||
var localize = {
|
||||
ordinalNumber,
|
||||
era,
|
||||
quarter,
|
||||
month,
|
||||
day,
|
||||
dayPeriod
|
||||
}
|
||||
|
||||
export default localize
|
||||
```
|
||||
|
||||
#### localize.ordinalNumber
|
||||
|
||||
Function that takes a numeric argument and returns a string with ordinal number:
|
||||
|
||||
```js
|
||||
// In `en-US` locale:
|
||||
function ordinalNumber (dirtyNumber, dirtyOptions) {
|
||||
var number = Number(dirtyNumber)
|
||||
|
||||
var rem100 = number % 100
|
||||
if (rem100 > 20 || rem100 < 10) {
|
||||
switch (rem100 % 10) {
|
||||
case 1:
|
||||
return number + 'st'
|
||||
case 2:
|
||||
return number + 'nd'
|
||||
case 3:
|
||||
return number + 'rd'
|
||||
}
|
||||
}
|
||||
return number + 'th'
|
||||
}
|
||||
|
||||
var localize = {
|
||||
ordinalNumber: ordinalNumber,
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
If the form of the ordinal number depends on the grammatical case (or other grammatical structures),
|
||||
use `options.unit` argument which could be one of the values 'year', 'quarter', 'month', 'week',
|
||||
'date', 'dayOfYear', 'day', 'hour', 'minute' or 'second':
|
||||
|
||||
```js
|
||||
// In `ru` locale:
|
||||
function ordinalNumber (dirtyNumber, dirtyOptions) {
|
||||
var options = dirtyOptions || {}
|
||||
var unit = String(options.unit)
|
||||
var suffix
|
||||
|
||||
if (unit === 'date') {
|
||||
suffix = '-е'
|
||||
} else if (unit === 'week' || unit === 'minute' || unit === 'second') {
|
||||
suffix = '-я'
|
||||
} else {
|
||||
suffix = '-й'
|
||||
}
|
||||
|
||||
return dirtyNumber + suffix
|
||||
}
|
||||
```
|
||||
|
||||
#### localize.era and using buildLocalizeFn function
|
||||
|
||||
Localizes a numeric era. Takes either 0 or 1 as the first argument.
|
||||
As with many of the `localize` functions, they can be generated by built-in
|
||||
`buildLocalizeFn` function.
|
||||
|
||||
From the CLDR chart, use ['Date & Time'/'Gregorian'/'Eras'](https://www.unicode.org/cldr/charts/32/summary/en.html#1771) values.
|
||||
|
||||
```js
|
||||
// In `en-US` locale:
|
||||
import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'
|
||||
|
||||
var eraValues = {
|
||||
narrow: ['B', 'A'],
|
||||
abbreviated: ['BC', 'AD'],
|
||||
wide: ['Before Christ', 'Anno Domini']
|
||||
}
|
||||
|
||||
var localize = {
|
||||
// ...
|
||||
era: buildLocalizeFn({
|
||||
values: eraValues,
|
||||
defaultWidth: 'wide'
|
||||
}),
|
||||
// ...
|
||||
}
|
||||
|
||||
export default localize
|
||||
```
|
||||
|
||||
General usage of the function:
|
||||
|
||||
```js
|
||||
var result = locale.localize.era(1, {width: 'abbreviated'})
|
||||
//=> 'AD'
|
||||
```
|
||||
|
||||
If `width` is not provided or the `values` object does not contain values for the provided width,
|
||||
`defaultWidth` will be used. `defaultWidth` should indicate the longest form of the localized value.
|
||||
The same is true for all other `localize` functions.
|
||||
`width` for `localize.era` function could be either 'narrow', 'abbreviated' or 'wide'.
|
||||
|
||||
```js
|
||||
var result = locale.localize.era(1, {width: 'foobar'})
|
||||
//=> 'Anno Domini'
|
||||
```
|
||||
|
||||
#### Formatting localizers
|
||||
|
||||
For some languages, there is a difference between "stand-alone" localizers and "formatting" localizers.
|
||||
"Stand-alone" means that the resulting value should make grammatical sense without context.
|
||||
"Formatting" means that the resulting value should be declined using the grammar rules of the language
|
||||
as if the value was a part of a date.
|
||||
For example, for languages with grammatical cases, the stand-alone month could be in the nominative case ("January"),
|
||||
and the formatting month could decline as a part of the phrase "1st of January".
|
||||
In this case, use parameters `formattingValues` and `defaultFormattingWidth` of `buildLocalizeFn` function.
|
||||
|
||||
Any localizer could be stand-alone and formatting.
|
||||
Check the CLDR chart for the unit to see if stand-alone and formatting values are different for a certain unit.
|
||||
If there's no difference (usually it happens in languages without grammatical cases),
|
||||
parameters `formattingValues` and `defaultFormattingWidth` are not needed.
|
||||
|
||||
In this example, in Russian language a stand-alone month is in the nominative case ("январь"),
|
||||
and formatting month is in the genitive case ("января" as in "1-е января"). Notice the different endings:
|
||||
|
||||
```js
|
||||
// In `ru` locale:
|
||||
var monthValues = {
|
||||
narrow: ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'],
|
||||
abbreviated: ['янв.', 'фев.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', 'дек.'],
|
||||
wide: ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь']
|
||||
}
|
||||
var formattingMonthValues = {
|
||||
narrow: ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'],
|
||||
abbreviated: ['янв.', 'фев.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', 'дек.'],
|
||||
wide: ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря']
|
||||
}
|
||||
|
||||
var localize = {
|
||||
// ...
|
||||
month: buildLocalizeFn({
|
||||
values: monthValues,
|
||||
defaultWidth: 'wide',
|
||||
formattingValues: formattingMonthValues,
|
||||
defaultFormattingWidth: 'wide'
|
||||
}),
|
||||
// ...
|
||||
}
|
||||
|
||||
export default localize
|
||||
```
|
||||
|
||||
#### localize.quarter
|
||||
|
||||
Localizes a quarter. Takes 1, 2, 3 or 4 as the first argument.
|
||||
`width` could be either 'narrow', 'abbreviated' or 'wide'.
|
||||
From the CLDR chart, use ['Date & Time'/'Gregorian'/'Quarters'](https://www.unicode.org/cldr/charts/32/summary/en.html#1781) values.
|
||||
|
||||
```js
|
||||
// In `en-US` locale:
|
||||
import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'
|
||||
|
||||
var quarterValues = {
|
||||
narrow: ['1', '2', '3', '4'],
|
||||
abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
|
||||
wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']
|
||||
}
|
||||
|
||||
var localize = {
|
||||
// ...
|
||||
quarter: buildLocalizeFn({
|
||||
values: quarterValues,
|
||||
defaultWidth: 'wide',
|
||||
argumentCallback: function (quarter) {
|
||||
return Number(quarter) - 1
|
||||
}
|
||||
}),
|
||||
// ...
|
||||
}
|
||||
|
||||
export default localize
|
||||
```
|
||||
|
||||
Note the usage of `argumentCallback` here. It converts the value passed into `localize.quarter` function
|
||||
(one of 1, 2, 3 or 4) into the index of the values array inside `quarterValues` (one of 0, 1, 2 or 3).
|
||||
|
||||
#### localize.month
|
||||
|
||||
Localizes a month. Takes numbers between 0 (for January) and 11 (for December).
|
||||
`width` could be either 'narrow', 'abbreviated' or 'wide'.
|
||||
From the CLDR chart, use ['Date & Time'/'Gregorian'/'Months'](https://www.unicode.org/cldr/charts/32/summary/en.html#1793) values.
|
||||
|
||||
```js
|
||||
// In `en-US` locale:
|
||||
import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'
|
||||
|
||||
var monthValues = {
|
||||
narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
|
||||
abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
|
||||
wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
|
||||
}
|
||||
|
||||
var localize = {
|
||||
// ...
|
||||
month: buildLocalizeFn({
|
||||
values: monthValues,
|
||||
defaultWidth: 'wide'
|
||||
}),
|
||||
// ...
|
||||
}
|
||||
|
||||
export default localize
|
||||
```
|
||||
|
||||
**NOTE**: in English, the names of days of the week and months are capitalized.
|
||||
Check if the same is true for the language you're working on.
|
||||
Generally, formatted dates should look like they are in the middle of a sentence,
|
||||
e.g. in Spanish language the weekdays and months should be in the lowercase:
|
||||
|
||||
```js
|
||||
// In `es` locale:
|
||||
var monthValues = {
|
||||
narrow: ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
|
||||
abbreviated: ['ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.'],
|
||||
wide: ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre']
|
||||
}
|
||||
```
|
||||
|
||||
`monthValues.narrow` are usually capitalized in every language. Check the CLDR chart for your language.
|
||||
|
||||
#### localize.day
|
||||
|
||||
Localizes a week day. Takes numbers between 0 (for Sunday) and 6 (for Saturday).
|
||||
`width` could be either 'narrow', 'short', 'abbreviated' or 'wide'.
|
||||
From the CLDR chart, use ['Date & Time'/'Gregorian'/'Days'](https://www.unicode.org/cldr/charts/32/summary/en.html#1829) values.
|
||||
|
||||
```js
|
||||
// In `en-US` locale:
|
||||
import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'
|
||||
|
||||
var dayValues = {
|
||||
narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
|
||||
short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
|
||||
abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
|
||||
wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
|
||||
}
|
||||
|
||||
var localize = {
|
||||
// ...
|
||||
day: buildLocalizeFn({
|
||||
values: dayValues,
|
||||
defaultWidth: 'wide'
|
||||
}),
|
||||
// ...
|
||||
}
|
||||
|
||||
export default localize
|
||||
```
|
||||
|
||||
**NOTE**: the rules of capitalization from `localize.month` are also true for `localize.day`.
|
||||
|
||||
#### localize.dayPeriod
|
||||
|
||||
Localizes a certain day period.
|
||||
Could take one of these strings as the argument: 'am', 'pm', 'midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'.
|
||||
`width` could be either 'narrow', 'abbreviated' or 'wide'.
|
||||
From the CLDR chart, use ['Date & Time'/'Gregorian'/'Day periods'](https://www.unicode.org/cldr/charts/32/summary/en.html#1857) values.
|
||||
|
||||
```js
|
||||
// In `en-US` locale:
|
||||
import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'
|
||||
|
||||
var dayPeriodValues = {
|
||||
narrow: {
|
||||
am: 'a',
|
||||
pm: 'p',
|
||||
midnight: 'mi',
|
||||
noon: 'n',
|
||||
morning: 'in the morning',
|
||||
afternoon: 'in the afternoon',
|
||||
evening: 'in the evening',
|
||||
night: 'at night'
|
||||
},
|
||||
abbreviated: {
|
||||
am: 'AM',
|
||||
pm: 'PM',
|
||||
midnight: 'midnight',
|
||||
noon: 'noon',
|
||||
morning: 'in the morning',
|
||||
afternoon: 'in the afternoon',
|
||||
evening: 'in the evening',
|
||||
night: 'at night'
|
||||
},
|
||||
wide: {
|
||||
am: 'a.m.',
|
||||
pm: 'p.m.',
|
||||
midnight: 'midnight',
|
||||
noon: 'noon',
|
||||
morning: 'in the morning',
|
||||
afternoon: 'in the afternoon',
|
||||
evening: 'in the evening',
|
||||
night: 'at night'
|
||||
}
|
||||
}
|
||||
|
||||
var localize = {
|
||||
// ...
|
||||
dayPeriod: buildLocalizeFn({
|
||||
values: dayPeriodValues,
|
||||
defaultWidth: 'wide'
|
||||
})
|
||||
}
|
||||
|
||||
export default localize
|
||||
```
|
||||
|
||||
### formatLong
|
||||
|
||||
Put this object in `_lib/formatLong/index.js` inside your locale directory.
|
||||
Locale date formats written in `format` token string format.
|
||||
See the list of tokens: https://date-fns.org/docs/format
|
||||
Use https://en.wikipedia.org/wiki/Date_format_by_country and CLDR chart as the reference.
|
||||
|
||||
#### formatLong.dateFormats
|
||||
|
||||
Use ['Date & Time'/'Gregorian'/'Formats - Standard - Date Formats'](https://www.unicode.org/cldr/charts/32/summary/en.html#1901) values
|
||||
from the CLDR chart as a reference.
|
||||
|
||||
```js
|
||||
// In `en-US` locale
|
||||
import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js'
|
||||
|
||||
var dateFormats = {
|
||||
full: 'EEEE, MMMM do, y',
|
||||
long: 'MMMM do, y',
|
||||
medium: 'MMM d, y',
|
||||
short: 'MM/dd/yyyy'
|
||||
}
|
||||
|
||||
var formatLong = {
|
||||
date: buildFormatLongFn({
|
||||
formats: dateFormats,
|
||||
defaultWidth: 'full'
|
||||
}),
|
||||
// ...
|
||||
}
|
||||
|
||||
export default formatLong
|
||||
```
|
||||
|
||||
`dateFormats.long` usually contains the longest form of writing the year, the month, and the day of the month.
|
||||
Use ordinal day of the month ('do' token) where applicable (date-fns, unlike CLDR supports ordinal numbers).
|
||||
|
||||
`dateFormats.full` contains the same but with the day of the week.
|
||||
|
||||
`dateFormats.medium` contains the same values as `dateFormats.long`, but with short form of month and non-ordinal day.
|
||||
|
||||
`dateFormats.short` usually contains a strictly numerical form of the date.
|
||||
Pay attention to the order of units (big-, little- or middle-endian)
|
||||
|
||||
#### formatLong.timeFormats
|
||||
|
||||
Use ['Date & Time'/'Gregorian'/'Formats - Standard - Time Formats'](https://www.unicode.org/cldr/charts/32/summary/en.html#1906) values
|
||||
from the CLDR chart as a reference.
|
||||
|
||||
Use some variation of 'h:mm aa' for 12-hour clock locales or 'H:mm' for 24-hour clock locales. Use the local time separator.
|
||||
|
||||
```js
|
||||
// In `en-US` locale
|
||||
import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js'
|
||||
|
||||
var timeFormats = {
|
||||
full: 'h:mm:ss a zzzz',
|
||||
long: 'h:mm:ss a z',
|
||||
medium: 'h:mm:ss a',
|
||||
short: 'h:mm a'
|
||||
}
|
||||
|
||||
var formatLong = {
|
||||
// ...
|
||||
time: buildFormatLongFn({
|
||||
formats: timeFormats,
|
||||
defaultWidth: 'full'
|
||||
}),
|
||||
// ...
|
||||
}
|
||||
|
||||
export default formatLong
|
||||
```
|
||||
|
||||
#### formatLong.dateTimeFormats
|
||||
|
||||
Use
|
||||
['Date & Time'/'Gregorian'/'Formats - Standard - Date & Time Combination Formats'](https://www.unicode.org/cldr/charts/32/summary/en.html#1910)
|
||||
values from the CLDR chart.
|
||||
|
||||
```js
|
||||
// In `en-US` locale
|
||||
import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js'
|
||||
|
||||
var dateTimeFormats = {
|
||||
full: "{{date}} 'at' {{time}}",
|
||||
long: "{{date}} 'at' {{time}}",
|
||||
medium: '{{date}}, {{time}}',
|
||||
short: '{{date}}, {{time}}'
|
||||
}
|
||||
|
||||
var formatLong = {
|
||||
// ...
|
||||
dateTime: buildFormatLongFn({
|
||||
formats: dateTimeFormats,
|
||||
defaultWidth: 'full'
|
||||
})
|
||||
}
|
||||
|
||||
export default formatLong
|
||||
```
|
||||
|
||||
'{{date}}' and '{{time}}' from the strings will be replaced with the date and time respectively.
|
||||
|
||||
### formatRelative
|
||||
|
||||
Put this function in `_lib/formatRelative/index.js` inside your locale directory.
|
||||
Relative date formats written in `format` token string format.
|
||||
See the list of tokens: https://date-fns.org/docs/format.
|
||||
Has to process `lastWeek`, `yesterday`, `today`, `tomorrow`, `nextWeek` and `other` tokens.
|
||||
|
||||
```javascript
|
||||
// In `en-US` locale
|
||||
var formatRelativeLocale = {
|
||||
lastWeek: "'last' eeee 'at' p",
|
||||
yesterday: "'yesterday at' p",
|
||||
today: "'today at' p",
|
||||
tomorrow: "'tomorrow at' p",
|
||||
nextWeek: "eeee 'at' p",
|
||||
other: 'P'
|
||||
}
|
||||
|
||||
export default function formatRelative (token, date, baseDate, options) {
|
||||
return formatRelativeLocale[token]
|
||||
}
|
||||
```
|
||||
|
||||
You can use `date` and `baseDate` supplied to the function for the difficult situations
|
||||
(e.g. grammatical genders and cases of the days of the week)
|
||||
Both `date` and `baseDate` are converted to UTC timezone, which means
|
||||
that you should use UTC methods to take the date values (i.e. `date.getUTCDay()` instead of `date.getDay()`).
|
||||
You can use UTC functions from `src/_lib` in date-fns root directory if they are available.
|
||||
Don't forget to pass `options` object to them!
|
||||
Example is below. Note the different grammatical case for weekdays (accusative instead of nominative)
|
||||
and declension of word "прошлый" which depends on the grammatical gender of the weekday:
|
||||
|
||||
```javascript
|
||||
// In `ru` locale
|
||||
import isSameUTCWeek from '../../../../_lib/isSameUTCWeek/index.js'
|
||||
|
||||
var accusativeWeekdays = ['воскресенье', 'понедельник', 'вторник', 'среду', 'четверг', 'пятницу', 'субботу']
|
||||
|
||||
function lastWeek (day) {
|
||||
var weekday = accusativeWeekdays[day]
|
||||
|
||||
switch (day) {
|
||||
case 0:
|
||||
return "'в прошлое " + weekday + " в' p"
|
||||
case 1:
|
||||
case 2:
|
||||
case 4:
|
||||
return "'в прошлый " + weekday + " в' p"
|
||||
case 3:
|
||||
case 5:
|
||||
case 6:
|
||||
return "'в прошлую " + weekday + " в' p"
|
||||
}
|
||||
}
|
||||
|
||||
function thisWeek (day) {
|
||||
// ...
|
||||
}
|
||||
|
||||
function nextWeek (day) {
|
||||
// ...
|
||||
}
|
||||
|
||||
var formatRelativeLocale = {
|
||||
lastWeek: function (date, baseDate, options) {
|
||||
var day = date.getUTCDay()
|
||||
if (isSameUTCWeek(date, baseDate, options)) {
|
||||
return thisWeek(day)
|
||||
} else {
|
||||
return lastWeek(day)
|
||||
}
|
||||
},
|
||||
yesterday: "'вчера в' p",
|
||||
today: "'сегодня в' p",
|
||||
tomorrow: "'завтра в' p",
|
||||
nextWeek: function (date, baseDate, options) {
|
||||
var day = date.getUTCDay()
|
||||
if (isSameUTCWeek(date, baseDate, options)) {
|
||||
return thisWeek(day)
|
||||
} else {
|
||||
return nextWeek(day)
|
||||
}
|
||||
},
|
||||
other: 'P'
|
||||
}
|
||||
|
||||
export default function formatRelative (token, date, baseDate, options) {
|
||||
var format = formatRelativeLocale[token]
|
||||
|
||||
if (typeof format === 'function') {
|
||||
return format(date, baseDate, options)
|
||||
}
|
||||
|
||||
return format
|
||||
}
|
||||
```
|
||||
|
||||
### match
|
||||
|
||||
Put this object in `_lib/match/index.js` inside your locale directory.
|
||||
Contains the functions used by `parse` to parse a localized value:
|
||||
|
||||
```js
|
||||
// In `en-US` locale:
|
||||
import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js'
|
||||
import buildMatchFn from '../../../_lib/buildMatchFn/index.js'
|
||||
|
||||
var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i
|
||||
var parseOrdinalNumberPattern = /\d+/i
|
||||
|
||||
var matchEraPatterns = {
|
||||
narrow: /^(b|a)/i,
|
||||
abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,
|
||||
wide: /^(before christ|before common era|anno domini|common era)/i
|
||||
}
|
||||
var parseEraPatterns = {
|
||||
any: [/^b/i, /^(a|c)/i]
|
||||
}
|
||||
|
||||
var matchQuarterPatterns = {
|
||||
narrow: /^[1234]/i,
|
||||
abbreviated: /^q[1234]/i,
|
||||
wide: /^[1234](th|st|nd|rd)? quarter/i
|
||||
}
|
||||
var parseQuarterPatterns = {
|
||||
any: [/1/i, /2/i, /3/i, /4/i]
|
||||
}
|
||||
|
||||
var matchMonthPatterns = {
|
||||
narrow: /^[jfmasond]/i,
|
||||
abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,
|
||||
wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i
|
||||
}
|
||||
var parseMonthPatterns = {
|
||||
narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],
|
||||
any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]
|
||||
}
|
||||
|
||||
var matchDayPatterns = {
|
||||
narrow: /^[smtwf]/i,
|
||||
short: /^(su|mo|tu|we|th|fr|sa)/i,
|
||||
abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,
|
||||
wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i
|
||||
}
|
||||
var parseDayPatterns = {
|
||||
narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],
|
||||
any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]
|
||||
}
|
||||
|
||||
var matchDayPeriodPatterns = {
|
||||
narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,
|
||||
any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i
|
||||
}
|
||||
var parseDayPeriodPatterns = {
|
||||
any: {
|
||||
am: /^a/i,
|
||||
pm: /^p/i,
|
||||
midnight: /^mi/i,
|
||||
noon: /^no/i,
|
||||
morning: /morning/i,
|
||||
afternoon: /afternoon/i,
|
||||
evening: /evening/i,
|
||||
night: /night/i
|
||||
}
|
||||
}
|
||||
|
||||
var match = {
|
||||
ordinalNumber: buildMatchPatternFn({
|
||||
matchPattern: matchOrdinalNumberPattern,
|
||||
parsePattern: parseOrdinalNumberPattern,
|
||||
valueCallback: function (value) {
|
||||
return parseInt(value, 10)
|
||||
}
|
||||
}),
|
||||
|
||||
era: buildMatchFn({
|
||||
matchPatterns: matchEraPatterns,
|
||||
defaultMatchWidth: 'wide',
|
||||
parsePatterns: parseEraPatterns,
|
||||
defaultParseWidth: 'any'
|
||||
}),
|
||||
|
||||
quarter: buildMatchFn({
|
||||
matchPatterns: matchQuarterPatterns,
|
||||
defaultMatchWidth: 'wide',
|
||||
parsePatterns: parseQuarterPatterns,
|
||||
defaultParseWidth: 'any',
|
||||
valueCallback: function (index) {
|
||||
return index + 1
|
||||
}
|
||||
}),
|
||||
|
||||
month: buildMatchFn({
|
||||
matchPatterns: matchMonthPatterns,
|
||||
defaultMatchWidth: 'wide',
|
||||
parsePatterns: parseMonthPatterns,
|
||||
defaultParseWidth: 'any'
|
||||
}),
|
||||
|
||||
day: buildMatchFn({
|
||||
matchPatterns: matchDayPatterns,
|
||||
defaultMatchWidth: 'wide',
|
||||
parsePatterns: parseDayPatterns,
|
||||
defaultParseWidth: 'any'
|
||||
}),
|
||||
|
||||
dayPeriod: buildMatchFn({
|
||||
matchPatterns: matchDayPeriodPatterns,
|
||||
defaultMatchWidth: 'any',
|
||||
parsePatterns: parseDayPeriodPatterns,
|
||||
defaultParseWidth: 'any'
|
||||
})
|
||||
}
|
||||
|
||||
export default match
|
||||
```
|
||||
|
||||
These functions mirror those in `localize`.
|
||||
|
||||
For `matchPatterns` the patterns should match the whole meaningful word for the parsed value
|
||||
(which will be cut from the string in the process of parsing).
|
||||
`parsePatterns` contains patterns to detect one of the values from the result of `matchPatterns`
|
||||
Note that the patterns for `parsePatterns` don't necessary contain the whole word:
|
||||
|
||||
```javascript
|
||||
// In `en-US` locale:
|
||||
var parseDayPatterns = {
|
||||
narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],
|
||||
any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]
|
||||
}
|
||||
```
|
||||
|
||||
but only the bare minimum to parse the value.
|
||||
|
||||
Also note that all patterns have "case-insensitive" flags
|
||||
to match as much arbitrary user input as possible. For the same reason, try to match
|
||||
any variation of diacritical marks:
|
||||
|
||||
```javascript
|
||||
// In `eo` locale:
|
||||
var matchDayPatterns = {
|
||||
narrow: /^[dlmĵjvs]/i,
|
||||
short: /^(di|lu|ma|me|(ĵ|jx|jh|j)a|ve|sa)/i,
|
||||
abbreviated: /^(dim|lun|mar|mer|(ĵ|jx|jh|j)a(ŭ|ux|uh|u)|ven|sab)/i,
|
||||
wide: /^(diman(ĉ|cx|ch|c)o|lundo|mardo|merkredo|(ĵ|jx|jh|j)a(ŭ|ux|uh|u)do|vendredo|sabato)/i
|
||||
}
|
||||
var parseDayPatterns = {
|
||||
narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^(j|ĵ)/i, /^v/i, /^s/i],
|
||||
any: [/^d/i, /^l/i, /^ma/i, /^me/i, /^(j|ĵ)/i, /^v/i, /^s/i]
|
||||
}
|
||||
```
|
||||
|
||||
Here, for the word "dimanĉo" the functions will match also "dimancxo", "dimancho"
|
||||
and even grammatically incorrect "dimanco".
|
||||
|
||||
Try to match any possible way of writing the word. Don't forget the grammatical cases:
|
||||
|
||||
```javascript
|
||||
// In `ru` locale:
|
||||
var matchMonthPatterns = {
|
||||
narrow: /^[яфмаисонд]/i,
|
||||
abbreviated: /^(янв|фев|март?|апр|ма[йя]|июн[ья]?|июл[ья]?|авг|сент?|окт|нояб?|дек)/i,
|
||||
wide: /^(январ[ья]|феврал[ья]|марта?|апрел[ья]|ма[йя]|июн[ья]|июл[ья]|августа?|сентябр[ья]|октябр[ья]|октябр[ья]|ноябр[ья]|декабр[ья])/i
|
||||
}
|
||||
```
|
||||
|
||||
and variations of short weekdays and months:
|
||||
|
||||
```javascript
|
||||
// In `ru` locale:
|
||||
var matchDayPatterns = {
|
||||
narrow: /^[впсч]/i,
|
||||
short: /^(вс|во|пн|по|вт|ср|чт|че|пт|пя|сб|су)\.?/i,
|
||||
abbreviated: /^(вск|вос|пнд|пон|втр|вто|срд|сре|чтв|чет|птн|пят|суб).?/i,
|
||||
wide: /^(воскресень[ея]|понедельника?|вторника?|сред[аы]|четверга?|пятниц[аы]|суббот[аы])/i
|
||||
}
|
||||
```
|
||||
|
||||
(here, the `abbreviated` pattern will match both `вск` and `вос` as the short of `воскресенье` {Sunday})
|
||||
|
||||
In `match.ordinalNumber` match ordinal numbers as well as non-ordinal numbers:
|
||||
|
||||
```javascript
|
||||
// In `en-US` locale:
|
||||
var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i
|
||||
```
|
||||
|
||||
Don't forget the grammatical genders:
|
||||
|
||||
```javascript
|
||||
// In `ru` locale:
|
||||
var matchOrdinalNumberPattern = /^(\d+)(-?(е|я|й|ое|ье|ая|ья|ый|ой|ий|ый))?/i
|
||||
```
|
||||
|
||||
### formatDistance
|
||||
|
||||
`formatDistance` property of locale is a function which takes three arguments:
|
||||
token passed by date-fns' `formatDistance` function (e.g. 'lessThanXMinutes'),
|
||||
a number of units to be displayed by the function
|
||||
(e.g. `locale.formatDistance('lessThanXMinutes', 5)` would display localized 'less than 5 minutes')
|
||||
and object with options.
|
||||
|
||||
Your best guess is to copy `formatDistance` property from another locale and change the values.
|
||||
|
||||
### Tests
|
||||
|
||||
To test locales we use snapshots. See [`en-US` snapshot](https://github.com/date-fns/date-fns/blob/master/src/locale/en-US/snapshot.md) for an example.
|
||||
|
||||
To generate snapshots, run `yarn locale-snapshots`. The snapshot for the locale
|
||||
you're working on will appear in the root locale directory (e.g. `src/locales/ru/snapshot.md`).
|
||||
|
||||
Once you are done with the locale, generate the snapshot and review the output values.
|
||||
|
||||
## Creating a locale with the same language as another locale
|
||||
|
||||
Import the locale properties already implemented for the language,
|
||||
but replace unique properties.
|
||||
|
||||
```javascript
|
||||
// Same as en-US
|
||||
import formatDistance from '../en-US/_lib/formatDistance/index.js'
|
||||
import formatRelative from '../en-US/_lib/formatRelative/index.js'
|
||||
import localize from '../en-US/_lib/localize/index.js'
|
||||
import match from '../en-US/_lib/match/index.js'
|
||||
|
||||
// Unique for en-GB
|
||||
import formatLong from './_lib/formatLong/index.js'
|
||||
|
||||
/**
|
||||
* @type {Locale}
|
||||
* @category Locales
|
||||
* @summary English locale (United Kingdom).
|
||||
* @language English
|
||||
* @iso-639-2 eng
|
||||
* @author John Doe [@example]{@link https://github.com/example}
|
||||
*/
|
||||
var locale = {
|
||||
formatDistance: formatDistance,
|
||||
formatLong: formatLong,
|
||||
formatRelative: formatRelative,
|
||||
localize: localize,
|
||||
match: match,
|
||||
|
||||
// Unique for en-GB
|
||||
options: {
|
||||
weekStartsOn: 1,
|
||||
firstWeekContainsDate: 4
|
||||
}
|
||||
}
|
||||
|
||||
export default locale
|
||||
```
|
||||
+147
@@ -0,0 +1,147 @@
|
||||
const path = require('path')
|
||||
|
||||
module.exports = {
|
||||
groups: [
|
||||
'General',
|
||||
'Types',
|
||||
'Common Helpers',
|
||||
'Conversion Helpers',
|
||||
'Interval Helpers',
|
||||
'Timestamp Helpers',
|
||||
'Millisecond Helpers',
|
||||
'Second Helpers',
|
||||
'Minute Helpers',
|
||||
'Hour Helpers',
|
||||
'Day Helpers',
|
||||
'Weekday Helpers',
|
||||
'Week Helpers',
|
||||
'ISO Week Helpers',
|
||||
'Month Helpers',
|
||||
'Quarter Helpers',
|
||||
'Year Helpers',
|
||||
'ISO Week-Numbering Year Helpers',
|
||||
'Decade Helpers',
|
||||
],
|
||||
|
||||
staticDocs: [
|
||||
{
|
||||
type: 'markdown',
|
||||
urlId: 'Getting-Started',
|
||||
category: 'General',
|
||||
title: 'Getting Started',
|
||||
description: 'Introduction & installation instructions',
|
||||
path: path.join(__dirname, 'gettingStarted.md'),
|
||||
},
|
||||
{
|
||||
type: 'markdown',
|
||||
urlId: 'Change-Log',
|
||||
category: 'General',
|
||||
title: 'Change Log',
|
||||
description: 'Changes for each version of the library',
|
||||
path: path.join(__dirname, '..', 'CHANGELOG.md'),
|
||||
},
|
||||
{
|
||||
type: 'markdown',
|
||||
urlId: 'Contributing',
|
||||
category: 'General',
|
||||
title: 'Contributing',
|
||||
description: 'Contribution manual',
|
||||
path: path.join(__dirname, '..', 'CONTRIBUTING.md'),
|
||||
},
|
||||
{
|
||||
type: 'markdown',
|
||||
urlId: 'Constants',
|
||||
category: 'General',
|
||||
title: 'Constants',
|
||||
description: 'Useful constants',
|
||||
path: path.join(__dirname, 'constants.md'),
|
||||
},
|
||||
{
|
||||
type: 'markdown',
|
||||
urlId: 'I18n',
|
||||
category: 'General',
|
||||
title: 'I18n',
|
||||
description: 'Internationalization',
|
||||
path: path.join(__dirname, 'i18n.md'),
|
||||
},
|
||||
{
|
||||
type: 'markdown',
|
||||
urlId: 'I18n-Contribution-Guide',
|
||||
category: 'General',
|
||||
title: 'I18n Contribution Guide',
|
||||
description: 'Locales manual',
|
||||
path: path.join(__dirname, 'i18nContributionGuide.md'),
|
||||
},
|
||||
{
|
||||
type: 'markdown',
|
||||
urlId: 'Time-Zones',
|
||||
category: 'General',
|
||||
title: 'Time Zones',
|
||||
description: 'Time zone functions',
|
||||
path: path.join(__dirname, 'timeZones.md'),
|
||||
},
|
||||
{
|
||||
type: 'markdown',
|
||||
urlId: 'ECMAScript-Modules',
|
||||
category: 'General',
|
||||
title: 'ECMAScript Modules',
|
||||
description: 'Tree-shaking guide',
|
||||
path: path.join(__dirname, 'esm.md'),
|
||||
},
|
||||
{
|
||||
type: 'markdown',
|
||||
urlId: 'webpack',
|
||||
category: 'General',
|
||||
title: 'webpack',
|
||||
description: 'Using date-fns with webpack',
|
||||
path: path.join(__dirname, 'webpack.md'),
|
||||
},
|
||||
{
|
||||
type: 'markdown',
|
||||
urlId: 'FP-Guide',
|
||||
category: 'General',
|
||||
title: 'FP Guide',
|
||||
description: 'Curried functions',
|
||||
path: path.join(__dirname, 'fp.md'),
|
||||
},
|
||||
{
|
||||
type: 'markdown',
|
||||
urlId: 'Unicode-Tokens',
|
||||
category: 'General',
|
||||
title: 'Unicode Tokens',
|
||||
description: 'Usage of the Unicode tokens in parse and format',
|
||||
path: path.join(__dirname, 'unicodeTokens.md'),
|
||||
},
|
||||
{
|
||||
type: 'markdown',
|
||||
urlId: 'Upgrade-Guide',
|
||||
category: 'General',
|
||||
title: 'Upgrade guide',
|
||||
description: 'Changes from v1 to v2',
|
||||
path: path.join(__dirname, 'upgradeGuide.md'),
|
||||
},
|
||||
{
|
||||
type: 'markdown',
|
||||
urlId: 'License',
|
||||
category: 'General',
|
||||
title: 'License',
|
||||
description: 'MIT © Sasha Koss',
|
||||
path: path.join(__dirname, '..', 'LICENSE.md'),
|
||||
},
|
||||
],
|
||||
|
||||
sharedDocs: [
|
||||
{
|
||||
fullPath: path.join(__dirname, 'Interval.js'),
|
||||
},
|
||||
{
|
||||
fullPath: path.join(__dirname, 'Locale.js'),
|
||||
},
|
||||
{
|
||||
fullPath: path.join(__dirname, 'Duration.js'),
|
||||
},
|
||||
{
|
||||
fullPath: path.join(__dirname, 'Day.js'),
|
||||
},
|
||||
],
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="32px" height="26px" viewBox="0 0 32 26" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 3.7.1 (28215) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>Slice 1</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="date-fns-mini-logo" fill="#770C56">
|
||||
<g id="Page-1">
|
||||
<g id="logo">
|
||||
<g id="Page-1">
|
||||
<g id="Solid-logo">
|
||||
<g id="White-logo">
|
||||
<path d="M0.0773377951,12.9617647 C0.0773377951,10.4657522 0.541359926,8.11201106 1.46941811,5.90047059 C2.39747629,3.68893013 3.73386003,1.72977324 5.47860941,0.0229411764 L8.98665179,0.0229411764 C5.34866372,3.58342956 3.52969697,7.89632761 3.52969697,12.9617647 C3.52969697,18.0272018 5.34866372,22.3400999 8.98665179,25.9005883 L5.47860941,25.9005883 C3.73386003,24.1937561 2.39747629,22.2345993 1.46941811,20.0230588 C0.541359926,17.8115184 0.0773377951,15.4577772 0.0773377951,12.9617647 L0.0773377951,12.9617647 L0.0773377951,12.9617647 L0.0773377951,12.9617647 Z M31.4378137,12.9617647 C31.4378137,15.4577772 30.9737916,17.8115184 30.0457334,20.0230588 C29.1176752,22.2345993 27.7812915,24.1937561 26.0365421,25.9005883 L22.5284998,25.9005883 C26.1664878,22.3400999 27.9854545,18.0272018 27.9854545,12.9617647 C27.9854545,7.89632761 26.1664878,3.58342956 22.5284998,0.0229411764 L26.0365421,0.0229411764 C27.7812915,1.72977324 29.1176752,3.68893013 30.0457334,5.90047059 C30.9737916,8.11201106 31.4378137,10.4657522 31.4378137,12.9617647 L31.4378137,12.9617647 L31.4378137,12.9617647 L31.4378137,12.9617647 Z" id="Parans"></path>
|
||||
<g id="Hands" transform="translate(12.954081, 1.720588)">
|
||||
<rect id="Hand" x="0" y="0" width="2.32013386" height="13.1911764"></rect>
|
||||
<polygon id="Hand" points="2.3189551 13.1499342 0.815087916 11.6629302 10.2484366 2.3353599 11.7523038 3.82236388 2.3189551 13.1499342"></polygon>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
+1
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 176 33"><g fill="#770C56" fill-rule="evenodd"><path d="M.1 16.5A22.7 22.7 0 017.1 0h4.4a22 22 0 00-7 16.5 22 22 0 007 16.4H7A22.5 22.5 0 01.1 16.5zm40.2 0a22.7 22.7 0 01-7 16.4H29a22 22 0 007-16.4 22 22 0 00-7-16.5h4.5a22.5 22.5 0 016.9 16.5z" fill-rule="nonzero"/><path d="M16.6 2.2h3v16.7h-3z"/><path d="M19.6 18.9l-2-2L29.7 5.2l2 2zM53.4 17.5c0 2 .5 3.8 1.4 5.2.8 1.4 2.2 2 4.2 2 1.5 0 2.7-.6 3.7-1.9 1-1.3 1.4-3.1 1.4-5.5 0-2.5-.5-4.3-1.5-5.5a4.7 4.7 0 00-3.7-1.7c-1.6 0-3 .6-4 1.8-1 1.3-1.5 3.1-1.5 5.6zm5-10.3c1.4 0 2.7.3 3.7 1 .5.3 1.2 1 2 1.9V.3h3v26.6h-2.9v-2.7a7 7 0 01-2.7 2.6c-1 .5-2.2.8-3.5.8-2.2 0-4-.9-5.6-2.7a10.6 10.6 0 01-2.4-7.2c0-2.9.7-5.3 2.2-7.4a7 7 0 016.1-3zm15.1 14.6c0 1 .4 1.7 1 2.2.8.5 1.6.8 2.5.8 1.2 0 2.3-.3 3.3-.8a4.5 4.5 0 002.7-4.3V17l-1.5.6-1.8.4-2 .2c-1.2.2-2 .4-2.7.8-1 .5-1.5 1.4-1.5 2.7zm8-6.6c.7-.1 1.2-.4 1.4-1 .2-.2.2-.7.2-1.2 0-1.1-.4-1.9-1.1-2.4-.8-.5-2-.8-3.4-.8-1.7 0-3 .5-3.6 1.4-.4.5-.7 1.3-.8 2.3h-3c0-2.4.8-4 2.3-5 1.5-1 3.2-1.4 5.1-1.4 2.3 0 4.2.4 5.6 1.3 1.4.9 2.1 2.2 2.1 4v11.2c0 .3 0 .6.2.8.1.2.4.3.9.3a5 5 0 001 0V27a9 9 0 01-1.1.3h-1c-1.2 0-2-.4-2.5-1.2-.3-.4-.5-1-.6-1.7a8.8 8.8 0 01-7 3.2c-1.7 0-3.2-.6-4.3-1.7a5.4 5.4 0 01-1.8-4c0-1.9.6-3.2 1.7-4.2a8 8 0 014.4-1.9l5.2-.6zm9.9-13h3.3v5.4h3v2.6h-3V23c0 .6.2 1 .7 1.3l1.2.2a15.2 15.2 0 001.2 0v2.5l-1.2.3h-1.3c-1.5 0-2.6-.4-3.1-1.1-.6-.8-.8-1.8-.8-3V10.1h-2.6V7.6h2.6V2.2zm16.8 5a8.8 8.8 0 016.9 3.4c.7 1 1 2.1 1.3 3.4.2 1 .3 2.3.3 4.3h-14.2c0 2 .5 3.5 1.4 4.7.9 1.2 2.2 1.8 4 1.8a5.2 5.2 0 005.3-4h3.2c0 .8-.3 1.6-.8 2.4a7.6 7.6 0 01-5.3 4c-.8.3-1.7.4-2.6.4-2.4 0-4.5-.9-6.2-2.6a10.2 10.2 0 01-2.5-7.4c0-3 .9-5.6 2.6-7.6 1.6-1.9 3.8-2.9 6.6-2.9zm5.2 8.5a8.4 8.4 0 00-1-3.4c-.9-1.5-2.3-2.3-4.4-2.3a5 5 0 00-3.8 1.6c-1 1-1.5 2.4-1.6 4.1h10.8zm5.5-.8h9.1v3.4h-9v-3.4zM132 4.6c0-1.3.3-2.3.7-3 .8-1 2.2-1.6 4.4-1.6a11.4 11.4 0 011.4 0v3a26.4 26.4 0 00-1.2 0c-1 0-1.5.2-1.7.7-.2.6-.3 1.9-.3 4h3.2v2.5h-3.3V27H132V10.2h-2.7V7.7h2.7v-3zm8.6 3h3v2.7c1-1.1 2-2 3-2.4 1-.5 2.1-.8 3.4-.8 2.7 0 4.6 1 5.6 3 .5 1 .8 2.5.8 4.4V27H153V14.7c0-1.2-.2-2.1-.6-2.8-.5-1.2-1.6-1.8-3.1-1.8a4.9 4.9 0 00-4.2 1.8c-.6.6-1 1.3-1.1 2-.2.6-.3 1.6-.3 2.9v10.1h-3.2V7.6zm21.6 13.2c0 1.1.4 2 .8 2.5.8 1 2.3 1.6 4.3 1.6 1.2 0 2.2-.2 3.2-.8.9-.5 1.3-1.3 1.3-2.4a2 2 0 00-1-1.9c-.5-.3-1.5-.6-2.9-1l-2.5-.6c-1.7-.4-3-.8-3.7-1.3a4.1 4.1 0 01-2-3.7c0-1.8.6-3.3 1.9-4.4 1.3-1.2 3-1.7 5.3-1.7 3 0 5 .8 6.3 2.5.8 1.1 1.2 2.3 1.2 3.5h-3c-.1-.7-.4-1.4-.9-2-.7-.8-2-1.3-3.8-1.3-1.3 0-2.2.3-2.8.8-.7.4-1 1-1 1.8 0 .9.4 1.5 1.3 2 .4.3 1.2.6 2.1.8l2.1.6c2.4.5 4 1 4.7 1.6 1.3.8 2 2.1 2 4a6 6 0 01-2 4.4c-1.3 1.2-3.3 1.9-6 1.9-2.9 0-5-.7-6.1-2a7.4 7.4 0 01-2-4.9h3.2z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
+19
@@ -0,0 +1,19 @@
|
||||
# Releasing date-fns
|
||||
|
||||
1. First, make sure that the library is built by running `./scripts/build/build.sh` and committing and pushing any change you would have.
|
||||
|
||||
2. Then add the changelog entry generated by `yarn ts-node scripts/release/buildChangelog.ts` to [CHANGELOG.md](../CHANGELOG.md). Make sure that the output is valid Markdown and fix if there're any errors. Commit and push the file.
|
||||
|
||||
3. Using the version that the changelog script generated, run the command:
|
||||
|
||||
```bash
|
||||
env VERSION="vX.XX.X" APP_ENV="production" GOOGLE_APPLICATION_CREDENTIALS="secrets/production/key.json" ./scripts/release/release.sh
|
||||
```
|
||||
|
||||
The script will change `package.json`. **Do not commit the change, and reset it instead**.
|
||||
|
||||
4. Now when the package is published, go to [GitHub Releases](https://github.com/date-fns/date-fns/releases) and draft a new version using the changelog entry you generated earlier.
|
||||
|
||||
5. Finally, write an announce tweet using the created GitHub release as the tweet link.
|
||||
|
||||
You're done, great job!
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
# Time Zones
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Overview](#overview)
|
||||
|
||||
- [`date-fns-tz`](#date-fns-tz)
|
||||
|
||||
## Overview
|
||||
|
||||
Working with UTC or ISO date strings is easy, and so is working with JS dates when all times
|
||||
are displayed in a user's local time in the browser. The difficulty comes when working with another
|
||||
time zone's local time, other than the current system's, like showing the local time of an event in LA
|
||||
at 8pm PST on a Node server in Europe or a user's machine set to EST.
|
||||
|
||||
In this case there are two relevant pieces of information:
|
||||
|
||||
- a fixed moment in time in the form of a timestamp, UTC or ISO date string, and
|
||||
- the time zone descriptor, usually an offset or IANA time zone name (e.g. `America/Los_Angeles`).
|
||||
|
||||
Libraries like Moment and Luxon, which provide their own date time classes, manage these timestamp and time
|
||||
zone values internally. Since `date-fns` always returns a plain JS Date, which implicitly has the current
|
||||
system's time zone, helper functions are needed for handling common time zone related use cases.
|
||||
|
||||
## [`date-fns-tz`](https://www.npmjs.com/package/date-fns-tz)
|
||||
|
||||
Dependency free IANA time zone support is implemented via the
|
||||
[Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) to keep
|
||||
actual time zone data out of code bundles. Modern browsers all support the
|
||||
[necessary features](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat#Browser_compatibility),
|
||||
and for those that don't a [polyfill](https://github.com/yahoo/date-time-format-timezone) can be used.
|
||||
|
||||
Functions are provided for converting to and from a Date instance which will have the internal UTC time
|
||||
adjusted so it prints to the correct time value in the associated time zone, regardless of the current
|
||||
system time zone. The `date-fns` `format` function is extended with support for the `z...zzzz` tokens to
|
||||
format long and short time zone names.
|
||||
|
||||
Compatible with `date-fns` version 2
|
||||
|
||||
License: MIT
|
||||
|
||||
### Synopsis
|
||||
|
||||
```js
|
||||
const { zonedTimeToUtc, utcToZonedTime, format } = require('date-fns-tz')
|
||||
|
||||
// Set the date to "2018-09-01T16:01:36.386Z"
|
||||
const utcDate = zonedTimeToUtc('2018-09-01 18:01:36.386', 'Europe/Berlin')
|
||||
|
||||
// Obtain a Date instance that will render the equivalent Berlin time for the UTC date
|
||||
const date = new Date('2018-09-01T16:01:36.386Z')
|
||||
const timeZone = 'Europe/Berlin'
|
||||
const zonedDate = utcToZonedTime(date, timeZone)
|
||||
// zonedDate could be used to initialize a date picker or display the formatted local date/time
|
||||
|
||||
// Set the output to "1.9.2018 18:01:36.386 GMT+02:00 (CEST)"
|
||||
const pattern = 'd.M.yyyy HH:mm:ss.SSS \'GMT\' XXX (z)'
|
||||
const output = format(zonedDate, pattern, { timeZone: 'Europe/Berlin' })
|
||||
```
|
||||
|
||||
### Links
|
||||
|
||||
- [API / Usage Scenarios](https://github.com/marnusw/date-fns-tz#time-zone-helpers)
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
# Unicode Tokens
|
||||
|
||||
Starting with v2, `format` and `parse` use [Unicode tokens].
|
||||
|
||||
The tokens are different from Moment.js and other libraries that opted to use
|
||||
custom formatting rules. While usage of a standard ensures compatibility and
|
||||
the future of the library, it causes confusion that this document intends
|
||||
to resolve.
|
||||
|
||||
## Popular mistakes
|
||||
|
||||
There are 4 tokens that cause most of the confusion:
|
||||
|
||||
- `D` and `DD` that represent the day of a year (1, 2, ..., 365, 366)
|
||||
are often confused with `d` and `dd` that represent the day of a month
|
||||
(1, 2, ..., 31).
|
||||
|
||||
- `YY` and `YYYY` that represent the local week-numbering year (44, 01, 00, 17)
|
||||
are often confused with `yy` and `yyyy` that represent the calendar year.
|
||||
|
||||
```js
|
||||
// ❌ Wrong!
|
||||
format(new Date(), 'YYYY-MM-DD')
|
||||
//=> 2018-10-283
|
||||
|
||||
// ✅ Correct
|
||||
format(new Date(), 'yyyy-MM-dd')
|
||||
//=> 2018-10-10
|
||||
|
||||
// ❌ Wrong!
|
||||
parse('11.02.87', 'D.MM.YY', new Date()).toString()
|
||||
//=> 'Sat Jan 11 1986 00:00:00 GMT+0200 (EET)'
|
||||
|
||||
// ✅ Correct
|
||||
parse('11.02.87', 'd.MM.yy', new Date()).toString()
|
||||
//=> 'Wed Feb 11 1987 00:00:00 GMT+0200 (EET)'
|
||||
```
|
||||
|
||||
To help with the issue, `format` and `parse` functions won't accept
|
||||
these tokens without `useAdditionalDayOfYearTokens` option for `D` and `DD` and
|
||||
`useAdditionalWeekYearTokens` options for `YY` and `YYYY`:
|
||||
|
||||
```js
|
||||
format(new Date(), 'D', { useAdditionalDayOfYearTokens: true })
|
||||
//=> '283'
|
||||
|
||||
parse('365+1987', 'DD+YYYY', new Date(), {
|
||||
useAdditionalDayOfYearTokens: true,
|
||||
useAdditionalWeekYearTokens: true
|
||||
}).toString()
|
||||
//=> 'Wed Dec 31 1986 00:00:00 GMT+0200 (EET)'
|
||||
```
|
||||
|
||||
[Unicode tokens]: https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
|
||||
+118
@@ -0,0 +1,118 @@
|
||||
# v2 Upgrade Guide
|
||||
|
||||
## Common changes
|
||||
|
||||
This page covers a few of the most common problems people face when updating from v1 to v2. For a more detailed list of changes, look at the [change log for version 2.0.0](https://date-fns.org/docs/Change-Log).
|
||||
|
||||
### Camel case naming schema
|
||||
|
||||
Function submodules now use camelCase naming schema:
|
||||
|
||||
```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'
|
||||
```
|
||||
|
||||
### New formatting tokens
|
||||
|
||||
Starting with v2 `format` and `parse` uses [Unicode tokens].
|
||||
|
||||
See [Unicode Tokens doc](https://date-fns.org/docs/Unicode-Tokens) for more details.
|
||||
|
||||
### String arguments
|
||||
|
||||
Functions now don't accept strings as date arguments. Strings should
|
||||
be parsed using `parseISO` (ISO 8601) or `parse`.
|
||||
|
||||
See [this post](https://blog.date-fns.org/post/we-cut-date-fns-v2-minimal-build-size-down-to-300-bytes-and-now-its-the-smallest-date-library-18f2nvh2z0yal) for more details.
|
||||
|
||||
```javascript
|
||||
// Before v2.0.0
|
||||
addDays('2016-01-01', 1)
|
||||
|
||||
// v2.0.0 onward
|
||||
addDays(parseISO('2016-01-01'), 1)
|
||||
```
|
||||
|
||||
### Arguments conversion
|
||||
|
||||
All functions now implicitly convert arguments by following rules:
|
||||
|
||||
| | 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:
|
||||
|
||||
- as before, arguments expected to be `Date` are converted to `Date` using _date-fns'_ `toDate` function;
|
||||
- arguments expected to be numbers are converted to integer numbers using our custom `toInteger` implementation
|
||||
(see [#765](https://github.com/date-fns/date-fns/pull/765));
|
||||
- arguments expected to be strings are converted to strings using JavaScript's `String` function;
|
||||
- arguments expected to be booleans are converted to boolean using JavaScript's `Boolean` function.
|
||||
|
||||
`null` and `undefined` passed to optional arguments (i.e. properties of `options` argument)
|
||||
are ignored as if no argument was passed.
|
||||
|
||||
If any argument is invalid (i.e. `NaN` for numbers and `Invalid Date` for dates),
|
||||
an invalid value will be returned:
|
||||
|
||||
- `false` for functions that return booleans (expect `isValid`);
|
||||
- `Invalid Date` for functions that return dates;
|
||||
- `NaN` for functions that return numbers;
|
||||
- and `String('Invalid Date')` for functions that return strings.
|
||||
|
||||
See tests and PRs [#460](https://github.com/date-fns/date-fns/pull/460) and
|
||||
[#765](https://github.com/date-fns/date-fns/pull/765) for exact behavior.
|
||||
|
||||
### `null`
|
||||
|
||||
`null` now is not a valid date. `isValid(null)` returns `false`;
|
||||
`toDate(null)` returns an invalid date. Since `toDate` is used internally
|
||||
by all the functions, operations over `null` will also return an invalid date.
|
||||
[See #537](https://github.com/date-fns/date-fns/issues/537) for the reasoning.
|
||||
|
||||
### `RangeError`
|
||||
|
||||
Functions now throw `RangeError` if optional values passed to `options`
|
||||
are not `undefined` or have expected values.
|
||||
This change is introduced for consistency with ECMAScript standard library which does the same.
|
||||
|
||||
### `TypeError`
|
||||
|
||||
All functions now check if the passed number of arguments is less
|
||||
than the number of required arguments and throw `TypeError` exception if so.
|
||||
|
||||
### UMD/CDN
|
||||
|
||||
The Bower & UMD/CDN package versions are no longer supported.
|
||||
|
||||
### New locale format
|
||||
|
||||
See [docs/Locale](https://date-fns.org/docs/Locale).
|
||||
|
||||
Locales renamed:
|
||||
|
||||
- `en` → `en-US`
|
||||
- `zh_cn` → `zh-CN`
|
||||
- `zh_tw` → `zh-TW`
|
||||
|
||||
```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'
|
||||
```
|
||||
|
||||
[unicode tokens]: https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user