-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathindex.js
31 lines (24 loc) · 876 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
module.exports = convert;
module.exports.toDate = convertToDate;
module.exports.toJulianDay = toJulianDay;
module.exports.toMillisecondsInJulianDay = toMillisecondsInJulianDay;
module.exports.fromJulianDayAndMilliseconds = fromJulianDayAndMilliseconds;
var DAY = 86400000;
var HALF_DAY = DAY / 2;
var UNIX_EPOCH_JULIAN_DATE = 2440587.5;
var UNIX_EPOCH_JULIAN_DAY = 2440587;
function convert(date) {
return (toJulianDay(date) + (toMillisecondsInJulianDay(date) / DAY)).toFixed(6);
};
function convertToDate(julian) {
return new Date((Number(julian) - UNIX_EPOCH_JULIAN_DATE) * DAY);
};
function toJulianDay(date) {
return ~~((+date + HALF_DAY) / DAY) + UNIX_EPOCH_JULIAN_DAY;
};
function toMillisecondsInJulianDay(date) {
return (+date + HALF_DAY) % DAY;
};
function fromJulianDayAndMilliseconds(day, ms) {
return (day - UNIX_EPOCH_JULIAN_DATE) * DAY + ms;
};