日光时数计算

时间:2012-06-20 19:12:08

标签: math sin cos julian julian-date

我有问题要获得此表达式的数值,我试图使用此公式计算白天时间。当我评估时,它最终给出了NaN 这个表达。

  J代表朱利安日。 (例如今天J = 172;)

任何帮助都将非常有价值, 感谢

P = Math.asin(0.39795*Math.cos(0.2163108 + 2*Math.atan(0.9671396*Math.tan[0.00860*(J-186)])));

2 个答案:

答案 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)));