blob: ec7edcd295f8bdd79eb60e44d8a17bb0b90fd80d [file] [log] [blame]
Tim van der Lippefdbd42e2020-04-07 14:14:361'use strict';
2
Nikolay Vitkovd76576c2024-12-02 14:10:153var $EvalError = require('es-errors/eval');
Tim van der Lippefdbd42e2020-04-07 14:14:364
5var DayWithinYear = require('./DayWithinYear');
6var InLeapYear = require('./InLeapYear');
7var MonthFromTime = require('./MonthFromTime');
8
Tim van der Lippe2c891972021-07-29 15:22:509// https://262.ecma-international.org/5.1/#sec-15.9.1.5
Tim van der Lippefdbd42e2020-04-07 14:14:3610
11module.exports = function DateFromTime(t) {
12 var m = MonthFromTime(t);
13 var d = DayWithinYear(t);
14 if (m === 0) {
15 return d + 1;
16 }
17 if (m === 1) {
18 return d - 30;
19 }
20 var leap = InLeapYear(t);
21 if (m === 2) {
22 return d - 58 - leap;
23 }
24 if (m === 3) {
25 return d - 89 - leap;
26 }
27 if (m === 4) {
28 return d - 119 - leap;
29 }
30 if (m === 5) {
31 return d - 150 - leap;
32 }
33 if (m === 6) {
34 return d - 180 - leap;
35 }
36 if (m === 7) {
37 return d - 211 - leap;
38 }
39 if (m === 8) {
40 return d - 242 - leap;
41 }
42 if (m === 9) {
43 return d - 272 - leap;
44 }
45 if (m === 10) {
46 return d - 303 - leap;
47 }
48 if (m === 11) {
49 return d - 333 - leap;
50 }
51 throw new $EvalError('Assertion failed: MonthFromTime returned an impossible value: ' + m);
52};