我有问题要获得此表达式的数值,我试图使用此公式计算白天时间。当我评估时,它最终给出了NaN 这个表达。
J代表朱利安日。 (例如今天J = 172;)
任何帮助都将非常有价值, 感谢
P = Math.asin(0.39795*Math.cos(0.2163108 + 2*Math.atan(0.9671396*Math.tan[0.00860*(J-186)])));
答案 0 :(得分:1)
我试过了,得到了答案......:
P = Math.Asin(0.39795 * Math.Cos(0.2163108 + 2 * Math.Atan(0.9671396 * Math.Tan(0.00860 * (J- 186)))));
我将“[”改为“(”在Math.tan [0.00860 *(J-186)]中)))
我得到了一个结果......(为了测试它我将J改为172)
确保P是 Double
答案 1 :(得分:0)
//GET LATITUDE
latitude = document.getElementById("latit").value;
L = latitude;
//GET JULIAN DAY
Now=new Date();
Now_Y=Now.getYear();
if (Now_Y < 70) { Now_Y=Now_Y*1+2000; }
if (Now_Y < 1900) { Now_Y=Now_Y*1+1900; }
Now_M=Now.getMonth(); // Jan-Dec = 0-11
Now_D=Now.getDate(); // 1-31
Now_H=Now.getHours(); // 0-23
Now_N=Now.getMinutes(); // 0-59
Now_S=Now.getSeconds(); // 0-59
Now_U=Now.getMilliseconds(); // 0-999
Now_T=Now.getTime(); // miliseconds since 1970-01-01
Now_O=Now.getTimezoneOffset(); // in minutes
Now_W=Now.getDay(); // weekday: Sun-Sat = 0-6
Now_J= // day of year (Julian day)
Math.round(( // ...account for DST
(new Date(Now_Y,Now_M,Now_D)) // ...most recent midnight
- (new Date(Now_Y,0,0))) // ...Dec. 31st midnight
/86400000); // ...mili-seconds per day
Gmt_N=Now_N+Now_O;
Gmt=new Date(Now_Y,Now_M,Now_D,Now_H,Gmt_N,Now_S);
Gmt_Y=Gmt.getYear();
if (Gmt_Y < 70) { Gmt_Y=Gmt_Y*1+2000; }
if (Gmt_Y < 1900) { Gmt_Y=Gmt_Y*1+1900; }
Gmt_M=Gmt.getMonth(); // Jan-Dec = 0-11
Gmt_D=Gmt.getDate(); // 1-31
Gmt_J= // day of year (Julian day)
Math.round(( // ...account for DST
(new Date(Gmt_Y,Gmt_M,Gmt_D)) // ...most recent midnight
- (new Date(Gmt_Y,0,0))) // ...Dec. 31st midnight
/86400000); // ...mili-seconds per day
alert("Julian Day: "+Gmt_J);
J = Gmt_J;
P = Math.asin(0.39795*Math.cos(0.2163108 + 2*Math.atan(0.9671396*Math.tan(0.00860*(J-186)))));
alert("P is : "+P)
pi = 3.14159265;
var D = 24 - (24/pi)*Math.acos((Math.sin(0.8333*pi/180) + Math.sin(L*pi/180)*Math.sin(P))/ (Math.cos(L*pi/18
0)*Math.cos(P)));