78 lines
2.6 KiB
JavaScript
78 lines
2.6 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports.default = isValid;
|
||
|
|
||
|
var _index = _interopRequireDefault(require("../toDate/index.js"));
|
||
|
|
||
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
|
||
|
/**
|
||
|
* @name isValid
|
||
|
* @category Common Helpers
|
||
|
* @summary Is the given date valid?
|
||
|
*
|
||
|
* @description
|
||
|
* Returns false if argument is Invalid Date and true otherwise.
|
||
|
* Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}
|
||
|
* Invalid Date is a Date, whose time value is NaN.
|
||
|
*
|
||
|
* Time value of Date: http://es5.github.io/#x15.9.1.1
|
||
|
*
|
||
|
* ### v2.0.0 breaking changes:
|
||
|
*
|
||
|
* - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
|
||
|
*
|
||
|
* - 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).
|
||
|
*
|
||
|
* @param {*} date - the date to check
|
||
|
* @returns {Boolean} the date is valid
|
||
|
* @throws {TypeError} 1 argument required
|
||
|
*
|
||
|
* @example
|
||
|
* // For the valid date:
|
||
|
* var result = isValid(new Date(2014, 1, 31))
|
||
|
* //=> true
|
||
|
*
|
||
|
* @example
|
||
|
* // For the value, convertable into a date:
|
||
|
* var result = isValid(1393804800000)
|
||
|
* //=> true
|
||
|
*
|
||
|
* @example
|
||
|
* // For the invalid date:
|
||
|
* var result = isValid(new Date(''))
|
||
|
* //=> false
|
||
|
*/
|
||
|
function isValid(dirtyDate) {
|
||
|
if (arguments.length < 1) {
|
||
|
throw new TypeError('1 argument required, but only ' + arguments.length + ' present');
|
||
|
}
|
||
|
|
||
|
var date = (0, _index.default)(dirtyDate);
|
||
|
return !isNaN(date);
|
||
|
}
|
||
|
|
||
|
module.exports = exports.default;
|