在Javascript中将Julian日期转换为常规日期
问题描述:
我正在尝试将Julian整数转换回日期。
I am trying to convert a Julian integer back to a date.
示例:
整数2456931 = 2014/09/30 //格式YYYY / MM / DD
integer 2456931 = 2014/09/30 // format YYYY/MM/DD
请帮助 - 提前致谢,
Please Help - Thanks in Advance,
答
以下是我根据自己的需要开发的内容:
Here is what I developed for my own need :
function dateToJulianNumber(d) {
// convert a Gregorian Date to a Julian number.
// S.Boisseau / BubblingApp.com / 2014
var x = Math.floor((14 - d.getMonth())/12);
var y = d.getFullYear() + 4800 - x;
var z = d.getMonth() - 3 + 12 * x;
var n = d.getDate() + Math.floor(((153 * z) + 2)/5) + (365 * y) + Math.floor(y/4) + Math.floor(y/400) - Math.floor(y/100) - 32045;
return n;
}
// assert September 30 2014 -> 2456931
console.log(dateToJulianNumber(new Date(2014,9,30)).toString());
function julianIntToDate(n) {
// convert a Julian number to a Gregorian Date.
// S.Boisseau / BubblingApp.com / 2014
var a = n + 32044;
var b = Math.floor(((4*a) + 3)/146097);
var c = a - Math.floor((146097*b)/4);
var d = Math.floor(((4*c) + 3)/1461);
var e = c - Math.floor((1461 * d)/4);
var f = Math.floor(((5*e) + 2)/153);
var D = e + 1 - Math.floor(((153*f) + 2)/5);
var M = f + 3 - 12 - Math.round(f/10);
var Y = (100*b) + d - 4800 + Math.floor(f/10);
return new Date(Y,M,D);
}
// assert 2456931 -> September 30 2014
console.log(julianIntToDate(2456931).toString());