32 lines
876 B
JavaScript
32 lines
876 B
JavaScript
|
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;
|
||
|
};
|