123456789101112131415161718192021222324252627282930313233343536 |
- 'use strict';
- var GetIntrinsic = require('get-intrinsic');
- var $DateUTC = GetIntrinsic('%Date.UTC%');
- var $isFinite = require('../helpers/isFinite');
- var DateFromTime = require('./DateFromTime');
- var Day = require('./Day');
- var floor = require('./floor');
- var modulo = require('./modulo');
- var MonthFromTime = require('./MonthFromTime');
- var ToIntegerOrInfinity = require('./ToIntegerOrInfinity');
- var YearFromTime = require('./YearFromTime');
- // https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.12
- module.exports = function MakeDay(year, month, date) {
- if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) {
- return NaN;
- }
- var y = ToIntegerOrInfinity(year);
- var m = ToIntegerOrInfinity(month);
- var dt = ToIntegerOrInfinity(date);
- var ym = y + floor(m / 12);
- if (!$isFinite(ym)) {
- return NaN;
- }
- var mn = modulo(m, 12);
- var t = $DateUTC(ym, mn, 1);
- if (YearFromTime(t) !== ym || MonthFromTime(t) !== mn || DateFromTime(t) !== 1) {
- return NaN;
- }
- return Day(t) + dt - 1;
- };
|