gnss-js 0.1.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +23 -0
- package/README.md +171 -5
- package/dist/analysis.cjs +1381 -0
- package/dist/analysis.d.cts +211 -0
- package/dist/analysis.d.ts +211 -0
- package/dist/analysis.js +14 -0
- package/dist/antex.cjs +239 -0
- package/dist/antex.d.cts +77 -0
- package/dist/antex.d.ts +77 -0
- package/dist/antex.js +8 -0
- package/dist/chunk-354IRDOG.js +239 -0
- package/dist/chunk-37QNKGTC.js +65 -0
- package/dist/chunk-5CMSYIYM.js +214 -0
- package/dist/chunk-5S5MONFK.js +0 -0
- package/dist/chunk-6FAL6P4G.js +12 -0
- package/dist/chunk-7NOFXKET.js +433 -0
- package/dist/chunk-CB6EOOLA.js +753 -0
- package/dist/chunk-HKN3PUGN.js +800 -0
- package/dist/chunk-IS4UUDBV.js +577 -0
- package/dist/chunk-K7WZQFBV.js +236 -0
- package/dist/chunk-LEEU5OIO.js +75 -0
- package/dist/chunk-PRSZIWKM.js +1482 -0
- package/dist/chunk-SDRRAJT5.js +433 -0
- package/dist/chunk-WR7LCB52.js +143 -0
- package/dist/chunk-Y3R57B5P.js +473 -0
- package/dist/chunk-YDMYO3YK.js +220 -0
- package/dist/constants.cjs +394 -0
- package/dist/constants.d.cts +14 -0
- package/dist/constants.d.ts +14 -0
- package/dist/constants.js +103 -0
- package/dist/coordinates.cjs +334 -0
- package/dist/coordinates.d.cts +81 -0
- package/dist/coordinates.d.ts +81 -0
- package/dist/coordinates.js +39 -0
- package/dist/ecef-CF0uAysr.d.cts +40 -0
- package/dist/ecef-CF0uAysr.d.ts +40 -0
- package/dist/ephemeris-BUWzfmBy.d.cts +114 -0
- package/dist/ephemeris-BUWzfmBy.d.ts +114 -0
- package/dist/gnss-BT6ulR17.d.cts +56 -0
- package/dist/gnss-C-tgoYNa.d.ts +56 -0
- package/dist/index.cjs +5774 -78
- package/dist/index.d.cts +17 -96
- package/dist/index.d.ts +17 -96
- package/dist/index.js +352 -415
- package/dist/nav-BAI1a9vK.d.cts +108 -0
- package/dist/nav-BAI1a9vK.d.ts +108 -0
- package/dist/nmea.cjs +247 -0
- package/dist/nmea.d.cts +37 -0
- package/dist/nmea.d.ts +37 -0
- package/dist/nmea.js +12 -0
- package/dist/ntrip.cjs +169 -0
- package/dist/ntrip.d.cts +98 -0
- package/dist/ntrip.d.ts +98 -0
- package/dist/ntrip.js +10 -0
- package/dist/orbit.cjs +504 -0
- package/dist/orbit.d.cts +117 -0
- package/dist/orbit.d.ts +117 -0
- package/dist/orbit.js +29 -0
- package/dist/parser-JPjjFgeP.d.cts +73 -0
- package/dist/parser-JPjjFgeP.d.ts +73 -0
- package/dist/rinex.cjs +1375 -0
- package/dist/rinex.d.cts +116 -0
- package/dist/rinex.d.ts +116 -0
- package/dist/rinex.js +37 -0
- package/dist/rtcm3.cjs +1519 -0
- package/dist/rtcm3.d.cts +143 -0
- package/dist/rtcm3.d.ts +143 -0
- package/dist/rtcm3.js +31 -0
- package/dist/signals.cjs +858 -0
- package/dist/signals.d.cts +93 -0
- package/dist/signals.d.ts +93 -0
- package/dist/signals.js +70 -0
- package/dist/time-DnI1VpE8.d.cts +33 -0
- package/dist/time-DnI1VpE8.d.ts +33 -0
- package/dist/time.cjs +585 -0
- package/dist/time.d.cts +307 -0
- package/dist/time.d.ts +307 -0
- package/dist/time.js +154 -0
- package/package.json +112 -14
- package/.prettierrc +0 -5
- package/jest.config.ts +0 -9
- package/test/functions.test.ts +0 -63
- package/test/gnss-scales.test.ts +0 -95
- package/test/julian.test.ts +0 -145
- package/test/rinex.test.ts +0 -11
- package/test/test.ts +0 -10
- package/test/utc.test.ts +0 -25
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DAYS_MJD2000_MJD,
|
|
3
|
+
DAYS_MJD_JULIAN,
|
|
4
|
+
MILLISECONDS_GPS_TAI,
|
|
5
|
+
MILLISECONDS_IN_DAY,
|
|
6
|
+
MILLISECONDS_IN_HOUR,
|
|
7
|
+
MILLISECONDS_IN_MINUTE,
|
|
8
|
+
MILLISECONDS_IN_SECOND,
|
|
9
|
+
MILLISECONDS_IN_WEEK,
|
|
10
|
+
MILLISECONDS_TT_TAI,
|
|
11
|
+
RINEX_CODES,
|
|
12
|
+
START_BDS_TIME,
|
|
13
|
+
START_GAL_TIME,
|
|
14
|
+
START_GLO_LEAP,
|
|
15
|
+
START_GPS_TIME,
|
|
16
|
+
START_JULIAN_TAI,
|
|
17
|
+
START_NTP_TIME,
|
|
18
|
+
START_TAI_TIME
|
|
19
|
+
} from "./chunk-LEEU5OIO.js";
|
|
20
|
+
|
|
21
|
+
// src/types/enums.ts
|
|
22
|
+
var Scale = /* @__PURE__ */ ((Scale2) => {
|
|
23
|
+
Scale2[Scale2["TAI"] = 0] = "TAI";
|
|
24
|
+
Scale2[Scale2["TT"] = 1] = "TT";
|
|
25
|
+
Scale2[Scale2["GPS"] = 2] = "GPS";
|
|
26
|
+
Scale2[Scale2["UTC"] = 3] = "UTC";
|
|
27
|
+
return Scale2;
|
|
28
|
+
})(Scale || {});
|
|
29
|
+
|
|
30
|
+
// src/time/functions.ts
|
|
31
|
+
function getTimeOfDay(date) {
|
|
32
|
+
return date.getTime() - Date.UTC(
|
|
33
|
+
date.getUTCFullYear(),
|
|
34
|
+
date.getUTCMonth(),
|
|
35
|
+
date.getUTCDate(),
|
|
36
|
+
0,
|
|
37
|
+
0,
|
|
38
|
+
0
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
function getDateFromTimeOfDay(timeOfDay, dateRaw) {
|
|
42
|
+
return new Date(
|
|
43
|
+
Date.UTC(
|
|
44
|
+
dateRaw.getUTCFullYear(),
|
|
45
|
+
dateRaw.getUTCMonth(),
|
|
46
|
+
dateRaw.getUTCDate(),
|
|
47
|
+
0,
|
|
48
|
+
0,
|
|
49
|
+
0
|
|
50
|
+
) + timeOfDay
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
function getDayOfYear(date) {
|
|
54
|
+
return Math.floor(
|
|
55
|
+
(date.getTime() - Date.UTC(date.getUTCFullYear())) / MILLISECONDS_IN_DAY
|
|
56
|
+
) + 1;
|
|
57
|
+
}
|
|
58
|
+
function getDateFromDayOfYear(dayOfYear, date) {
|
|
59
|
+
return new Date(
|
|
60
|
+
Date.UTC(
|
|
61
|
+
date.getUTCFullYear(),
|
|
62
|
+
0,
|
|
63
|
+
1,
|
|
64
|
+
date.getUTCHours(),
|
|
65
|
+
date.getUTCMinutes(),
|
|
66
|
+
date.getUTCSeconds(),
|
|
67
|
+
date.getUTCMilliseconds()
|
|
68
|
+
) + (dayOfYear - 1) * MILLISECONDS_IN_DAY
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
function getDayOfWeek(date) {
|
|
72
|
+
return date.getUTCDay();
|
|
73
|
+
}
|
|
74
|
+
function getDateFromDayOfWeek(dayOfWeek, dateRaw) {
|
|
75
|
+
if (dayOfWeek < 0 || dayOfWeek > 6)
|
|
76
|
+
throw new Error("Day of week must be a value between 0 and 7");
|
|
77
|
+
return new Date(
|
|
78
|
+
dateRaw.getTime() + (dayOfWeek - dateRaw.getUTCDay()) * MILLISECONDS_IN_DAY
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
function getDateFromHourCode(hourCode, date) {
|
|
82
|
+
const hour = RINEX_CODES.indexOf(hourCode);
|
|
83
|
+
if (hour === -1)
|
|
84
|
+
throw new Error("Hour code must be a lowercase letter between a and x");
|
|
85
|
+
const newDate = new Date(date.getTime());
|
|
86
|
+
newDate.setUTCHours(hour);
|
|
87
|
+
return newDate;
|
|
88
|
+
}
|
|
89
|
+
function getHourCode(date) {
|
|
90
|
+
return RINEX_CODES[date.getUTCHours()];
|
|
91
|
+
}
|
|
92
|
+
function getWeekOfYear(date) {
|
|
93
|
+
const target = new Date(
|
|
94
|
+
Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())
|
|
95
|
+
);
|
|
96
|
+
const dayNr = (target.getUTCDay() + 6) % 7;
|
|
97
|
+
target.setUTCDate(target.getUTCDate() - dayNr + 3);
|
|
98
|
+
const firstThursday = new Date(Date.UTC(target.getUTCFullYear(), 0, 4));
|
|
99
|
+
const dayDiff = (target.getTime() - firstThursday.getTime()) / (86400 * 1e3);
|
|
100
|
+
return 1 + Math.floor(dayDiff / 7) + 1;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// src/time/time-difference.ts
|
|
104
|
+
function getTimeDifference(startDate, finalDate) {
|
|
105
|
+
return Math.floor(finalDate.getTime() - startDate.getTime());
|
|
106
|
+
}
|
|
107
|
+
function getSecondsFromTimeDifference(timeDifference) {
|
|
108
|
+
return Math.floor(
|
|
109
|
+
timeDifference % MILLISECONDS_IN_MINUTE / MILLISECONDS_IN_SECOND
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
function getMinutesFromTimeDifference(timeDifference) {
|
|
113
|
+
return Math.floor(
|
|
114
|
+
timeDifference % MILLISECONDS_IN_HOUR / MILLISECONDS_IN_MINUTE
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
function getHoursFromTimeDifference(timeDifference) {
|
|
118
|
+
return Math.floor(
|
|
119
|
+
timeDifference % MILLISECONDS_IN_DAY / MILLISECONDS_IN_HOUR
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
function getTotalDaysFromTimeDifference(timeDifference) {
|
|
123
|
+
return Math.floor(timeDifference / MILLISECONDS_IN_DAY);
|
|
124
|
+
}
|
|
125
|
+
function getTimeDifferenceFromSeconds(seconds) {
|
|
126
|
+
return seconds * MILLISECONDS_IN_SECOND;
|
|
127
|
+
}
|
|
128
|
+
function getTimeDifferenceFromMinutes(minutes) {
|
|
129
|
+
return minutes * MILLISECONDS_IN_MINUTE;
|
|
130
|
+
}
|
|
131
|
+
function getTimeDifferenceFromHours(hours) {
|
|
132
|
+
return hours * MILLISECONDS_IN_HOUR;
|
|
133
|
+
}
|
|
134
|
+
function getTimeDifferenceFromDays(days) {
|
|
135
|
+
return days * MILLISECONDS_IN_DAY;
|
|
136
|
+
}
|
|
137
|
+
function getTimeDifferenceFromObject(timeDifferenceObject) {
|
|
138
|
+
const { seconds, minutes, hours, days } = timeDifferenceObject;
|
|
139
|
+
return getTimeDifferenceFromSeconds(seconds) + getTimeDifferenceFromMinutes(minutes) + getTimeDifferenceFromHours(hours) + getTimeDifferenceFromDays(days);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// src/time/utc.ts
|
|
143
|
+
var LEAP_SECONDS_TABLE = [
|
|
144
|
+
[3692217600, 37],
|
|
145
|
+
// 1 Jan 2017
|
|
146
|
+
[3644697600, 36],
|
|
147
|
+
// 1 Jul 2015
|
|
148
|
+
[3550089600, 35],
|
|
149
|
+
// 1 Jul 2012
|
|
150
|
+
[3439756800, 34],
|
|
151
|
+
// 1 Jan 2009
|
|
152
|
+
[3345062400, 33],
|
|
153
|
+
// 1 Jan 2006
|
|
154
|
+
[3124137600, 32],
|
|
155
|
+
// 1 Jan 1999
|
|
156
|
+
[3076704e3, 31],
|
|
157
|
+
// 1 Jul 1997
|
|
158
|
+
[3029443200, 30],
|
|
159
|
+
// 1 Jan 1996
|
|
160
|
+
[2982009600, 29],
|
|
161
|
+
// 1 Jul 1994
|
|
162
|
+
[2950473600, 28],
|
|
163
|
+
// 1 Jul 1993
|
|
164
|
+
[2918937600, 27],
|
|
165
|
+
// 1 Jul 1992
|
|
166
|
+
[2871676800, 26],
|
|
167
|
+
// 1 Jan 1991
|
|
168
|
+
[2840140800, 25],
|
|
169
|
+
// 1 Jan 1990
|
|
170
|
+
[2776982400, 24],
|
|
171
|
+
// 1 Jan 1988
|
|
172
|
+
[2698012800, 23],
|
|
173
|
+
// 1 Jul 1985
|
|
174
|
+
[2634854400, 22],
|
|
175
|
+
// 1 Jul 1983
|
|
176
|
+
[2603318400, 21],
|
|
177
|
+
// 1 Jul 1982
|
|
178
|
+
[2571782400, 20],
|
|
179
|
+
// 1 Jul 1981
|
|
180
|
+
[2524521600, 19],
|
|
181
|
+
// 1 Jan 1980
|
|
182
|
+
[2492985600, 18],
|
|
183
|
+
// 1 Jan 1979
|
|
184
|
+
[2461449600, 17],
|
|
185
|
+
// 1 Jan 1978
|
|
186
|
+
[2429913600, 16],
|
|
187
|
+
// 1 Jan 1977
|
|
188
|
+
[2398291200, 15],
|
|
189
|
+
// 1 Jan 1976
|
|
190
|
+
[2366755200, 14],
|
|
191
|
+
// 1 Jan 1975
|
|
192
|
+
[2335219200, 13],
|
|
193
|
+
// 1 Jan 1974
|
|
194
|
+
[2303683200, 12],
|
|
195
|
+
// 1 Jan 1973
|
|
196
|
+
[2287785600, 11],
|
|
197
|
+
// 1 Jul 1972
|
|
198
|
+
[2272060800, 10]
|
|
199
|
+
// 1 Jan 1972
|
|
200
|
+
];
|
|
201
|
+
function getLeap(date) {
|
|
202
|
+
const ntp_time = getNtpTime(date);
|
|
203
|
+
for (const [timestamp, leapSeconds] of LEAP_SECONDS_TABLE) {
|
|
204
|
+
if (ntp_time / MILLISECONDS_IN_SECOND - leapSeconds >= timestamp) {
|
|
205
|
+
return leapSeconds;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return 8;
|
|
209
|
+
}
|
|
210
|
+
function getGpsLeap(date) {
|
|
211
|
+
const leap_seconds = getLeap(date);
|
|
212
|
+
if (leap_seconds < 0) return 0;
|
|
213
|
+
return leap_seconds - 19;
|
|
214
|
+
}
|
|
215
|
+
function getUtcDate(date) {
|
|
216
|
+
const tai_date = getTaiDate(date);
|
|
217
|
+
const leap_seconds = getLeap(date);
|
|
218
|
+
return new Date(tai_date.getTime() - leap_seconds * MILLISECONDS_IN_SECOND);
|
|
219
|
+
}
|
|
220
|
+
function getDateFromUtc(utc_date) {
|
|
221
|
+
const tai_date = new Date(
|
|
222
|
+
utc_date.getTime() + getLeap(utc_date) * MILLISECONDS_IN_SECOND
|
|
223
|
+
);
|
|
224
|
+
const leap_seconds = getLeap(getDateFromTai(tai_date));
|
|
225
|
+
const gps_date = getDateFromTai(
|
|
226
|
+
new Date(utc_date.getTime() + leap_seconds * MILLISECONDS_IN_SECOND)
|
|
227
|
+
);
|
|
228
|
+
return gps_date;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// src/time/gnss.ts
|
|
232
|
+
function getGpsTime(date) {
|
|
233
|
+
return date.getTime() - START_GPS_TIME.getTime();
|
|
234
|
+
}
|
|
235
|
+
function getDateFromGpsTime(gpsTime) {
|
|
236
|
+
return new Date(gpsTime + START_GPS_TIME.getTime());
|
|
237
|
+
}
|
|
238
|
+
function getGalTime(date) {
|
|
239
|
+
return date.getTime() - START_GAL_TIME.getTime();
|
|
240
|
+
}
|
|
241
|
+
function getDateFromGalTime(galTime) {
|
|
242
|
+
return new Date(galTime + START_GAL_TIME.getTime());
|
|
243
|
+
}
|
|
244
|
+
function getBdsTime(date) {
|
|
245
|
+
return date.getTime() - START_BDS_TIME.getTime();
|
|
246
|
+
}
|
|
247
|
+
function getDateFromBdsTime(bdsTime) {
|
|
248
|
+
return new Date(bdsTime + START_BDS_TIME.getTime());
|
|
249
|
+
}
|
|
250
|
+
function getUnixTime(date) {
|
|
251
|
+
const utc_date = getUtcDate(date);
|
|
252
|
+
return utc_date.getTime();
|
|
253
|
+
}
|
|
254
|
+
function getDateFromUnixTime(unixTime) {
|
|
255
|
+
return getDateFromUtc(new Date(unixTime));
|
|
256
|
+
}
|
|
257
|
+
function getWeekNumber(date) {
|
|
258
|
+
return Math.floor(getGpsTime(date) / MILLISECONDS_IN_WEEK);
|
|
259
|
+
}
|
|
260
|
+
function getTimeOfWeek(date) {
|
|
261
|
+
return getGpsTime(date) % MILLISECONDS_IN_WEEK;
|
|
262
|
+
}
|
|
263
|
+
function getDateFromGpsData(weekNumber, timeOfWeek) {
|
|
264
|
+
return new Date(
|
|
265
|
+
weekNumber * MILLISECONDS_IN_WEEK + timeOfWeek + START_GPS_TIME.getTime()
|
|
266
|
+
);
|
|
267
|
+
}
|
|
268
|
+
function getTaiDate(date) {
|
|
269
|
+
return new Date(date.getTime() + MILLISECONDS_GPS_TAI);
|
|
270
|
+
}
|
|
271
|
+
function getDateFromTai(tai_date) {
|
|
272
|
+
return new Date(tai_date.getTime() - MILLISECONDS_GPS_TAI);
|
|
273
|
+
}
|
|
274
|
+
function getTtDate(date) {
|
|
275
|
+
return new Date(date.getTime() + MILLISECONDS_GPS_TAI + MILLISECONDS_TT_TAI);
|
|
276
|
+
}
|
|
277
|
+
function getDateFromTt(tt_date) {
|
|
278
|
+
return new Date(
|
|
279
|
+
tt_date.getTime() - MILLISECONDS_GPS_TAI - MILLISECONDS_TT_TAI
|
|
280
|
+
);
|
|
281
|
+
}
|
|
282
|
+
function getGloN4(date) {
|
|
283
|
+
return Math.floor((date.getUTCFullYear() - START_GLO_LEAP.getFullYear()) / 4);
|
|
284
|
+
}
|
|
285
|
+
function getGloNA(date) {
|
|
286
|
+
const n4 = getGloN4(date);
|
|
287
|
+
const init4YearPeriod = new Date(START_GLO_LEAP);
|
|
288
|
+
init4YearPeriod.setUTCFullYear(init4YearPeriod.getUTCFullYear() + n4 * 4);
|
|
289
|
+
return Math.floor(getTimeDifference(init4YearPeriod, date) / MILLISECONDS_IN_DAY) + 1;
|
|
290
|
+
}
|
|
291
|
+
function getDateFromGloN(n4, na, tod) {
|
|
292
|
+
const date = new Date(START_GLO_LEAP);
|
|
293
|
+
date.setFullYear(date.getUTCFullYear() + n4 * 4);
|
|
294
|
+
date.setTime(date.getTime() + (na - 1) * MILLISECONDS_IN_DAY + tod);
|
|
295
|
+
return date;
|
|
296
|
+
}
|
|
297
|
+
function getNtpTime(date) {
|
|
298
|
+
return getTaiDate(date).getTime() - START_NTP_TIME.getTime();
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// src/time/rinex.ts
|
|
302
|
+
function getRINEX(date) {
|
|
303
|
+
const seconds = date.getUTCSeconds();
|
|
304
|
+
const milliseconds = date.getUTCMilliseconds();
|
|
305
|
+
const fractionalSeconds = (milliseconds / MILLISECONDS_IN_SECOND).toFixed(7).slice(1);
|
|
306
|
+
const formatted = `> ${date.getUTCFullYear()} ${String(
|
|
307
|
+
date.getUTCMonth() + 1
|
|
308
|
+
).padStart(2, "0")} ${String(date.getUTCDate()).padStart(2, "0")} ${String(
|
|
309
|
+
date.getUTCHours()
|
|
310
|
+
).padStart(2, "0")} ${String(date.getUTCMinutes()).padStart(
|
|
311
|
+
2,
|
|
312
|
+
"0"
|
|
313
|
+
)} ${String(seconds).padStart(2, "0")}${fractionalSeconds}`;
|
|
314
|
+
return formatted;
|
|
315
|
+
}
|
|
316
|
+
function getDateFromRINEX(rinex) {
|
|
317
|
+
const year = Number.parseInt(rinex.substring(2, 6));
|
|
318
|
+
const month = Number.parseInt(rinex.substring(7, 9)) - 1;
|
|
319
|
+
const day = Number.parseInt(rinex.substring(10, 12));
|
|
320
|
+
const hour = Number.parseInt(rinex.substring(13, 15));
|
|
321
|
+
const minute = Number.parseInt(rinex.substring(16, 18));
|
|
322
|
+
const second = Number.parseInt(rinex.substring(19, 21));
|
|
323
|
+
const millisecond = Number.parseInt(rinex.substring(22, 29)) / 1e4;
|
|
324
|
+
const date = new Date(
|
|
325
|
+
Date.UTC(year, month, day, hour, minute, second, millisecond)
|
|
326
|
+
);
|
|
327
|
+
return date;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// src/time/julian.ts
|
|
331
|
+
function getJulianDate(date, scale = 1 /* TT */) {
|
|
332
|
+
if (scale === 0 /* TAI */) {
|
|
333
|
+
return (date.getTime() - START_TAI_TIME.getTime()) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
|
|
334
|
+
}
|
|
335
|
+
if (scale === 2 /* GPS */) {
|
|
336
|
+
return (date.getTime() - START_TAI_TIME.getTime() - MILLISECONDS_GPS_TAI) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
|
|
337
|
+
}
|
|
338
|
+
if (scale === 3 /* UTC */) {
|
|
339
|
+
return (date.getTime() - START_TAI_TIME.getTime() - getLeap(date) * MILLISECONDS_IN_SECOND) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
|
|
340
|
+
}
|
|
341
|
+
return (date.getTime() - START_TAI_TIME.getTime() + MILLISECONDS_TT_TAI) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
|
|
342
|
+
}
|
|
343
|
+
function getDateFromJulianDate(julianDate, scale = 1 /* TT */) {
|
|
344
|
+
if (scale === 0 /* TAI */) {
|
|
345
|
+
return new Date(
|
|
346
|
+
(julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime()
|
|
347
|
+
);
|
|
348
|
+
}
|
|
349
|
+
if (scale === 2 /* GPS */) {
|
|
350
|
+
return new Date(
|
|
351
|
+
(julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime() + MILLISECONDS_GPS_TAI
|
|
352
|
+
);
|
|
353
|
+
}
|
|
354
|
+
if (scale === 3 /* UTC */) {
|
|
355
|
+
const utc_date = new Date(
|
|
356
|
+
(julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime()
|
|
357
|
+
);
|
|
358
|
+
const tai_date = new Date(
|
|
359
|
+
utc_date.getTime() + getLeap(utc_date) * MILLISECONDS_IN_SECOND
|
|
360
|
+
);
|
|
361
|
+
const leap_seconds = getLeap(getDateFromTai(tai_date));
|
|
362
|
+
return new Date(utc_date.getTime() + leap_seconds * MILLISECONDS_IN_SECOND);
|
|
363
|
+
}
|
|
364
|
+
return new Date(
|
|
365
|
+
(julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime() - MILLISECONDS_TT_TAI
|
|
366
|
+
);
|
|
367
|
+
}
|
|
368
|
+
function getMJD(date, scale = 1 /* TT */) {
|
|
369
|
+
return getJulianDate(date, scale) - DAYS_MJD_JULIAN;
|
|
370
|
+
}
|
|
371
|
+
function getDateFromMJD(mjd, scale = 1 /* TT */) {
|
|
372
|
+
return getDateFromJulianDate(mjd + DAYS_MJD_JULIAN, scale);
|
|
373
|
+
}
|
|
374
|
+
function getMJD2000(date, scale = 1 /* TT */) {
|
|
375
|
+
return getMJD(date, scale) - DAYS_MJD2000_MJD;
|
|
376
|
+
}
|
|
377
|
+
function getDateFromMJD2000(mjd2000, scale = 1 /* TT */) {
|
|
378
|
+
return getDateFromMJD(mjd2000 + DAYS_MJD2000_MJD, scale);
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
export {
|
|
382
|
+
Scale,
|
|
383
|
+
getTimeOfDay,
|
|
384
|
+
getDateFromTimeOfDay,
|
|
385
|
+
getDayOfYear,
|
|
386
|
+
getDateFromDayOfYear,
|
|
387
|
+
getDayOfWeek,
|
|
388
|
+
getDateFromDayOfWeek,
|
|
389
|
+
getDateFromHourCode,
|
|
390
|
+
getHourCode,
|
|
391
|
+
getWeekOfYear,
|
|
392
|
+
getTimeDifference,
|
|
393
|
+
getSecondsFromTimeDifference,
|
|
394
|
+
getMinutesFromTimeDifference,
|
|
395
|
+
getHoursFromTimeDifference,
|
|
396
|
+
getTotalDaysFromTimeDifference,
|
|
397
|
+
getTimeDifferenceFromSeconds,
|
|
398
|
+
getTimeDifferenceFromMinutes,
|
|
399
|
+
getTimeDifferenceFromHours,
|
|
400
|
+
getTimeDifferenceFromDays,
|
|
401
|
+
getTimeDifferenceFromObject,
|
|
402
|
+
getLeap,
|
|
403
|
+
getGpsLeap,
|
|
404
|
+
getUtcDate,
|
|
405
|
+
getDateFromUtc,
|
|
406
|
+
getGpsTime,
|
|
407
|
+
getDateFromGpsTime,
|
|
408
|
+
getGalTime,
|
|
409
|
+
getDateFromGalTime,
|
|
410
|
+
getBdsTime,
|
|
411
|
+
getDateFromBdsTime,
|
|
412
|
+
getUnixTime,
|
|
413
|
+
getDateFromUnixTime,
|
|
414
|
+
getWeekNumber,
|
|
415
|
+
getTimeOfWeek,
|
|
416
|
+
getDateFromGpsData,
|
|
417
|
+
getTaiDate,
|
|
418
|
+
getDateFromTai,
|
|
419
|
+
getTtDate,
|
|
420
|
+
getDateFromTt,
|
|
421
|
+
getGloN4,
|
|
422
|
+
getGloNA,
|
|
423
|
+
getDateFromGloN,
|
|
424
|
+
getNtpTime,
|
|
425
|
+
getRINEX,
|
|
426
|
+
getDateFromRINEX,
|
|
427
|
+
getJulianDate,
|
|
428
|
+
getDateFromJulianDate,
|
|
429
|
+
getMJD,
|
|
430
|
+
getDateFromMJD,
|
|
431
|
+
getMJD2000,
|
|
432
|
+
getDateFromMJD2000
|
|
433
|
+
};
|