1 | ;
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.default = differenceInDays;
|
7 |
|
8 | var _index = _interopRequireDefault(require("../toDate/index.js"));
|
9 |
|
10 | var _index2 = _interopRequireDefault(require("../differenceInCalendarDays/index.js"));
|
11 |
|
12 | var _index3 = _interopRequireDefault(require("../compareAsc/index.js"));
|
13 |
|
14 | var _index4 = _interopRequireDefault(require("../_lib/requiredArgs/index.js"));
|
15 |
|
16 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
17 |
|
18 | /**
|
19 | * @name differenceInDays
|
20 | * @category Day Helpers
|
21 | * @summary Get the number of full days between the given dates.
|
22 | *
|
23 | * @description
|
24 | * Get the number of full day periods between the given dates.
|
25 | *
|
26 | * ### v2.0.0 breaking changes:
|
27 | *
|
28 | * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
|
29 | *
|
30 | * @param {Date|Number} dateLeft - the later date
|
31 | * @param {Date|Number} dateRight - the earlier date
|
32 | * @returns {Number} the number of full days
|
33 | * @throws {TypeError} 2 arguments required
|
34 | *
|
35 | * @example
|
36 | * // How many full days are between
|
37 | * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?
|
38 | * var result = differenceInDays(
|
39 | * new Date(2012, 6, 2, 0, 0),
|
40 | * new Date(2011, 6, 2, 23, 0)
|
41 | * )
|
42 | * //=> 365
|
43 | * // How many days are between
|
44 | * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?
|
45 | * var result = differenceInDays(
|
46 | * new Date(2011, 6, 3, 0, 1),
|
47 | * new Date(2011, 6, 2, 23, 59)
|
48 | * )
|
49 | * //=> 0
|
50 | */
|
51 | function differenceInDays(dirtyDateLeft, dirtyDateRight) {
|
52 | (0, _index4.default)(2, arguments);
|
53 | var dateLeft = (0, _index.default)(dirtyDateLeft);
|
54 | var dateRight = (0, _index.default)(dirtyDateRight);
|
55 | var sign = (0, _index3.default)(dateLeft, dateRight);
|
56 | var difference = Math.abs((0, _index2.default)(dateLeft, dateRight));
|
57 | dateLeft.setDate(dateLeft.getDate() - sign * difference); // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full
|
58 | // If so, result must be decreased by 1 in absolute value
|
59 |
|
60 | var isLastDayNotFull = (0, _index3.default)(dateLeft, dateRight) === -sign;
|
61 | var result = sign * (difference - isLastDayNotFull); // Prevent negative zero
|
62 |
|
63 | return result === 0 ? 0 : result;
|
64 | }
|
65 |
|
66 | module.exports = exports.default; |
\ | No newline at end of file |