You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					117 lines
				
				3.9 KiB
			
		
		
			
		
	
	
					117 lines
				
				3.9 KiB
			| 
											3 years ago
										 | # v2 Upgrade Guide
 | ||
|  | 
 | ||
|  | ## Common changes
 | ||
|  | 
 | ||
|  | ### 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](./unicodeTokens.md) for more details. | ||
|  | 
 | ||
|  | ### String arguments
 | ||
|  | 
 | ||
|  | Functions now don't accept strings as 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 |